【过题笔记】 7.15

news2024/9/21 14:54:28

Array Without Local Maximums

在这里插入图片描述

算法:动态规划

简要思路:

考虑左边的数跟当前位置的关系,不难想到只有三种情况:大于,小于,等于。 于是可以得到状态 f [ i ] [ j ] [ 0 / 1 / 2 ] f[i][j][0/1/2] f[i][j][0/1/2]表示当前位置填i,左边的数比他……的方案数,由于内存限制,要开滚动数组。分别转移即可。

总结:虽然这道题的一个数字涉及到左右两个数字之间的关系,但是由于动态规划的无后效性,我们只关心他之前的数跟当前数的关系。转移的时候利用限制条件转移即可。

#include<bits/stdc++.h>
using namespace std;

#define int long long

const int N = 1e5+10;
const int p = 998244353;
int n;
int a[N];
int f[2][300][4];


signed main(){
	cin>>n;
	for (int i = 1; i <= n; i++) cin>>a[i];
	int k = 0;
	if (a[1] == -1)
	  for (int j = 1; j <= 200; j++) f[k][j][0] = 1;
	else f[k][a[1]][0] = 1;
	for (int i = 2; i <= n; k^=1,i++){
		int kk = k^1; 
		int s = 0;
		for (int j = 1; j <= 200; j++){
			f[kk][j][0]=(a[i]==-1||a[i]==j)?s:0;
			(s+=f[k][j][0]+f[k][j][1]+f[k][j][2])%=p;
		}
		s = 0;
		for (int j = 1; j <= 200; j++)
		  if (a[i] == -1 || a[i] == j)f[kk][j][1] = (f[k][j][0]+f[k][j][1]+f[k][j][2])%p;
		  else f[kk][j][1] = 0;
		
		s = 0;
		for (int j = 200; j >= 1; j--){
			f[kk][j][2]=(a[i]==-1||a[i]==j)?s:0;
			(s+=f[k][j][1]+f[k][j][2])%=p;
	int ans = 0;
	for (int i = 1; i <= 200; i++)
	  ans = (ans+f[k][i][1]+f[k][i][2])%p;
	cout<<ans<<endl;
	return 0;
}

How many trees?

在这里插入图片描述

算法:动态规划

简要思路:

这道题两个限制条件:一个节点数,一个高度。
节点数和高度都是递增的,显然我们可以将这两个设定为状态。
f [ i ] [ j ] f[i][j] f[i][j]表示i个节点,组成高度不超过j的树的方案数。
由于这是一颗二叉树,所以我们可以分别看左右子树的状态(其实就是一个简化的树上背包),而后用乘法原理进行计算。
f [ i ] [ h ] = ∑ f [ j ] [ h − 1 ] ∗ f [ i − j − 1 ] [ h − 1 ] f[i][h]=\sum f[j][h-1]*f[i-j-1][h-1] f[i][h]=f[j][h1]f[ij1][h1]

#include<bits/stdc++.h>
using namespace std;

#define int long long

const int N = 100;
int n,h;
int f[N][N];

signed main(){
	cin>>n>>h;
	for (int i = 0; i <= n; i++) f[0][i] = 1;
	for (int he = 1; he <= n; he++)
	  for (int i = 1; i <= n; i++)
	    for (int j = 0; j < i; j++)
	      f[i][he]+=f[j][he-1]*f[i-j-1][he-1];
	cout<<(f[n][n]-f[n][h-1]);
	return 0;
}

Pencils and Boxes

在这里插入图片描述
算法:动态规划;单调队列(单调性);前缀和

简要思路:

这种分组划分问题不难想到dp
f i f_i fi表示以i位置结尾的划分是否可行
不难想到可以先将a数组排序,然后按照以下转移
f i ∣ = f j ( a [ i ] − a [ j ] < = d , j < = i − k ) f_i |=f_j(a[i]-a[j]<=d,j<=i-k) fi=fj(a[i]a[j]<=d,j<=ik)
可以看出j的变化范围是一个区间 [ l , i − k ] [l,i-k] [l,ik],l的位置就是满足上述条件的最小的位置,不难发现l具有单调性,因此可以单调维护(我用二分不知道为啥寄了)。

#include<bits/stdc++.h>
using namespace std;

#define int long long

const int N = 5e5+100;
int f[N];
int n,k,d;
int a[N];

int sum[N];


signed main(){
	cin>>n>>k>>d;
	for (int i = 2; i <= n+1; i++) cin>>a[i];
	sort(a+2,a+n+2);
	f[1] = 1; sum[1] = 1;
	for (int i = 1; i <= k; i++) sum[i] = 1;
	if (a[k+1]-a[2] > d){
		cout<<"NO"<<endl;
		return 0;
	}
	f[k+1] = 1; sum[k+1] = 2;
	int now = 1;
	for (int i = k+1; i <= n+1; i++){
		int r = i-k;
		if (a[i]-a[r+1] > d){
			f[i] = 0; sum[i] = sum[i-1]; continue;
		}
		while (a[i]-a[now+1]>d && now <= n+1) now++;
		if (now <= r) f[i] = ((sum[r]-sum[now-1]) > 0);
		sum[i] = sum[i-1]+f[i];
	}
	if (f[n+1]) cout<<"YES"; else cout<<"NO";
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库的管理

目录 远程连接的方式 修改数据库uuid流程 数据库的概念 关系型数据库 非关系型数据库 关系型数据和非关系型数据库优缺点 mysql的数据类型 数据库的管理 sql中的名词 sql语言的分类 1.DDL&#xff1a;创建库和表的语句 create 2.DML: 插入数据 insert 修改和更…

内存函数(C语言)

内存函数 以下函数的头文件&#xff1a;string.h 针对内存块进行处理的函数 memcpy 函数原型&#xff1a; void* memcpy(void* destination, const void* source, size_t num);目标空间地址 源空间地址num&#xff0c;被拷贝的字节个数 返回目标空间的起始地…

STM32智能医疗监测系统教程

目录 引言环境准备智能医疗监测系统基础代码实现&#xff1a;实现智能医疗监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;医疗监测与管理问题解决方案与优化收尾与总结 1. 引言 智能医疗监测系统通…

RocketMQ源码学习笔记:Producer发送消息流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、验证消息3、查找路由4、选择消息发送队列4.1、选择队列的策略4.2、源码阅读4.2.1、轮询规避4.2.2、故障延迟规避4.2.2.1、计算规避时间4.2.2.2、选择队列 4.2.3、ThreadLocal的…

正运动控制器:EtherCAT总线初始化

1、EtherCAT总线初始化的目的 运动控制器的EtherCAT 总线接口可用于连接 EtherCAT 伺服驱动器和 EtherCAT 扩展模块&#xff0c;无论连接什么模块&#xff0c; EtherCAT 总线都需要编写一段 EtherCAT 总线初始化程序来进行电机和 EtherCAT 扩展模块的使能。使能之后的应用与脉…

QT多线程下,信号槽分别在什么线程中执行,如何控制?

可以通过connect的第五个参数进行控制信号槽执行时所在的线程 connect有几种连接方式&#xff0c;直接连接、队列连接和 自动连接 直接连接&#xff08;Qt::DirectConnection&#xff09;&#xff1a;信号槽在信号发出者所在的线程中执行 队列连接&#xff08;Qt::QueuedConn…

LeetCode-返回链表倒数第K个节点、链表的回文结构,相交链表

一、返回链表倒数第k个节点 . - 力扣&#xff08;LeetCode&#xff09; 本体思路参展寻找中间节点的方法&#xff0c;寻找中间节点是定义快慢指针&#xff0c;快指针每次走两步&#xff0c;慢指针每次走一步&#xff0c;当快指针为空或者快指针的下一个节点是空时&#xff0c;…

vue实现提交时对不同板块的表单内容进行校验

需求 1、需要对第一个红色框框板块内所有带星号的地方进行校验&#xff0c;并将提示语显示到对应的输入框下面&#xff0c;如图&#xff1a; 2、第二个红色框框板块中&#xff0c;点击 “添加相关人员” 能实现对多人的添加功能&#xff0c;并且能绑定相对应的校验规则 3、在…

linux进行redis的安装并使用RDB进行数据迁移

现在有两台电脑&#xff0c;分别是A&#xff0c;B&#xff0c;现在我要把A电脑上的redis的数据迁移到B电脑上&#xff0c;B电脑上是没有安装redis的 1.找到A电脑的redis的版本 1.先启动A电脑的redis&#xff0c;一般来说&#xff0c;都是直接在linux的控制台输入&#xff1a;re…

数据结构与算法(1):递归函数的设计技巧

1.前言 哈喽小伙伴们大家好哦~从今天开始笔者就要开始正式学习数据结构与算法了&#xff0c;在这里写知识博客既是做一些学习笔记&#xff0c;又相当于给大家做知识分享咯&#xff0c;希望大家一起加油哦&#xff01; 2.正文 2.1递归的引入 在正式讲解递归之前&#xff0c;…

创建鸿蒙手机模拟器(HarmonyOS Emulator)

文 | Promise Sun 一.前提条件&#xff1a; 鸿蒙项目开发需要使用模拟器进行开发测试&#xff0c;但目前想在DevEco Studio开发工具中使用模拟器就必须到华为官网进行报名申请&#xff0c;参加“鸿蒙模拟器&#xff08;HarmonyOS Emulator&#xff09;Beta活动申请”。 申请审…

中间件的理解

内容来源于学习网站整理。【一看就会】什么是前端开发的中间件&#xff1f;_哔哩哔哩_bilibili 每日八股文~白话说mq&#xff0c;消息中间件_哔哩哔哩_bilibili 例如&#xff1a; 1&#xff09;两个人打电话&#xff0c;中间的通信网络就是中间件。 2&#xff09;菜鸟驿站&…

SpringBoot以及swagger的基本使用

1、SpringBoot是什么&#xff1f; 一种快速开发、启动Spring的框架、脚手架 遵循“约定优于配置”的思想&#xff0c;使得能够快速创建和配置Spring应用 2、SpringBoot的核心特性 自动配置&#xff0c;一些依赖、默认配置都预设好了&#xff0c;减少了配置量起步依赖&#x…

ROS2-Navigation2初体验:Gazebo“打不开”

输入ros2 launch nav2_bringup tb3_simulation_launch.py headless:False后只能打开RVIZ而无法打开Gazebo的问题&#xff0c;多次尝试解决后发现只是多等待一会儿即可&#xff0c;在此给同样学习Navigation2的朋友们提个醒 。 Getting Started — Nav2 1.0.0 documentation 1…

Mindspore框架CycleGAN模型实现图像风格迁移|(二)实例数据集(苹果2橘子)

Mindspore框架&#xff1a;CycleGAN模型实现图像风格迁移算法 Mindspore框架CycleGAN模型实现图像风格迁移|&#xff08;一&#xff09;CycleGAN神经网络模型构建Mindspore框架CycleGAN模型实现图像风格迁移|&#xff08;二&#xff09;实例数据集&#xff08;苹果2橘子&#…

补充性文件

第一 二章 1&#xff0c;关系型数据库是什么&#xff1f;其中的关系是指什么&#xff1f; 答&#xff1a; 关系型数据库是一些相关的表和其他数据库对象的集合。数据模型符合满足一定条件的二维表格式。 2&#xff0c;E-R模型&#xff1f; 实体为表。用矩形表示。属性为字…

嵌入式物联网在工业中的应用——案例分析

作者主页: 知孤云出岫 目录 嵌入式物联网在工业中的应用——案例分析引言1. 智能工厂1.1 实时监控与数据采集 2. 智能物流2.1 库存管理 3. 智能维护3.1 设备故障预测 4. 智能交通4.1 交通流量监测 总结 嵌入式物联网在工业中的应用——案例分析 引言 嵌入式物联网&#xff08;…

回车不搜索直接页面刷新问题解决

使用技术栈&#xff1a;vue3、elementUiPlus 问题&#xff1a;回车触发方法&#xff0c;会刷新整个页面&#xff0c;不执行搜索 解决方法&#xff1a;在搜索的表单中增加submit.native.prevent submit.native.prevent

项目管理:不懂跟进,项目白做

在职场上&#xff0c;工作的本质其实就是信息的传递与处理。而信息的及时传递&#xff0c;也就是我们常说的及时跟进&#xff0c;往往被许多项目经理和职场人忽视。 他们或许在暗地里埋头苦干&#xff0c;却忽略了明面上的沟通与汇报&#xff0c;最终导致合作方和内部团队都对…

利用AI辅助制作ppt封面

如何利用AI辅助制作一个炫酷的PPT封面 标题使用镂空字背景替换为动态视频 标题使用镂空字 1.首先&#xff0c;新建一个空白的ppt页面&#xff0c;插入一张你认为符合主题的图片&#xff0c;占满整个可视页面。 2.其次&#xff0c;插入一个矩形&#xff0c;右键选择设置形状格式…