【过题笔记】 7.15

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.mfbz.cn/a/800299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…

HTML5+CSS3小实例:纯CSS实现奥运五环

实例:纯CSS实现奥运五环 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-sca…

1.CATIA:CAA调用Excel接口

生成调用Excel的头文件 参考如下进行excel头文件的生成: 如何使用vs2022通过excel.exe生成VC、C++能够使用的头文件 添加如下的接口: #include "CApplication.h" #include "CWorkbook.h" #include "CWorkbooks.h" #include "CWorkshee…

AMD software 将两个显示器合并为一个超宽显示器

最近玩游戏的时候&#xff0c;发现了一个骚操作。 可以将两个显示器&#xff08;更多个的自己去试&#xff0c;不知道&#xff09;组合为一个显示器&#xff0c;注意&#xff0c;这里说的不是将两个显示都连接电脑从而使用双屏显示器&#xff0c; 而是 将两个显示器组合为一个…

实验一:图像信号的数字化

目录 一、实验目的 二、实验原理 三、实验内容 四、源程序及结果 源程序&#xff08;python&#xff09;&#xff1a; 结果&#xff1a; 五、结果分析 一、实验目的 通过本实验了解图像的数字化过程&#xff0c;了解数字图像的数据矩阵表示法。掌握取样&#xff08;象素个…

利用AI辅助制作ppt封面

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

uniapp-vue3-vite 搭建小程序、H5 项目模板

uniapp-vue3-vite 搭建小程序、H5 项目模板 特色准备拉取默认UniApp模板安装依赖启动项目测试结果 配置自动化导入安装依赖在vite.config.js中配置 引入 prerttier eslint stylelint.editorconfig.prettierrc.cjs.eslintrc.cjs.stylelintrc.cjs 引入 husky lint-staged com…

2024Datawhale AI夏令营---基于术语词典干预的机器翻译挑战赛--学习笔记

#Datawhale #NLP 1.背景介绍&#xff1a; 机器翻译&#xff08;Machine Translation&#xff0c;简称MT&#xff09;是自然语言处理领域的一个重要分支&#xff0c;其目标是将一种语言的文本自动转换为另一种语言的文本。机器翻译的发展可以追溯到20世纪50年代&#xff0c;经历…

springboot 适配ARM 架构

下载对应的maven https://hub.docker.com/_/maven/tags?page&page_size&ordering&name3.5.3-alpinedocker pull maven:3.5.3-alpinesha256:4c4e266aacf8ea6976b52df8467134b9f628cfed347c2f6aaf9e6aff832f7c45 2、下载对应的jdk https://hub.docker.com/_/o…

【银河麒麟操作系统】虚机重启lvs丢失现象分析及处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问麒麟软件产品专区&#xff1a;https://product.kylinos.cn 环境及现象描述 40台虚机强制重启后&#xff0c;其中8台虚机找不到逻辑卷导致启动异常&#xff0c;后续通过pvcreate 修复重建pv&#xff0c;激活vg和lv并修复…

矿产资源潜力预测不确定性评价

研究目的&#xff1a; 不确定性评估&#xff1a; 到底什么叫不确定性&#xff0c;简单来说就是某区域内的矿产资源量&#xff0c;并不确定到底有多少&#xff0c;你需要给出一个评估或者分布。 研究方法&#xff1a; 1.以模糊集来表示某些量&#xff1a; 关于什么是模糊集&am…

AWS Aurora Postgres 的开源替代品:存储和计算分离 | 开源日报 No.278

neondatabase/neon Stars: 13.0k License: Apache-2.0 Neon 是一个无服务器的开源替代品&#xff0c;用于 AWS Aurora Postgres。它将存储和计算分离&#xff0c;通过在节点集群中重新分配数据来替换 PostgreSQL 存储层。 提供自动扩展、分支和无限存储。Neon 安装包括计算节…

【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)

目录&#xff1a; 目录&#xff1a; 一、base58(58进制) 1.1 什么是base58&#xff1f; 1.2 辗转相除法 1.3 base58输出字节数&#xff1a; 二、源码分析&#xff1a; 2.1源代码&#xff1a; 2.2 算法思路介绍&#xff1a; 2.2.1 Base58编码过程&#xff1a; 2.1.2 Base58解码过…

基于高德地图实现Android定位功能实现(二)

基于高德地图实现Android定位功能实现&#xff08;二&#xff09; 在实现的高德地图的基本显示后&#xff0c;我们需要不断完善地图的功能 地图界面设计&#xff08;悬浮按钮等&#xff09; 首先就是地图页面的布局&#xff0c;这个根据大家的实际需求进行设计即可&#xff…

nacos 适配瀚高数据库、ARM 架构

下载nacos源码: https://github.com/alibaba/nacos/tree/2.3.1 瀚高技术文档 1、修改pom.xml 根目录nacos-all => pom.xml<dependencyManagement><dependency><groupId>com.highgo</groupId><artifactId>HgdbJdbc</artifactId><…

xss复习总结及ctfshow做题总结xss

xss复习总结 知识点 1.XSS 漏洞简介 ​ XSS又叫CSS&#xff08;Cross Site Script&#xff09;跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击用户的…

MySQL篇:事务

1.四大特性 首先&#xff0c;事务的四大特性&#xff1a;ACID&#xff08;原子性&#xff0c;一致性&#xff0c;隔离性&#xff0c;持久性&#xff09; 在InnoDB引擎中&#xff0c;是怎么来保证这四个特性的呢&#xff1f; 持久性是通过 redo log &#xff08;重做日志&…

【ARM】MDK-服务器与客户端不同网段内出现卡顿问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录不同网段之间的请求发送情况以及MDK网络版license文件内设置的影响。 2、 问题场景 客户使用很久的MDK网络版&#xff0c;在获取授权时都会出现4-7秒的卡顿&#xff0c;无法对keil进行任何操作&#xff0c;彻底…

java——Junit单元测试

测试分类 黑盒测试&#xff1a;不输入代码&#xff0c;给输入值&#xff0c;看程序能够给出期望的值。 白盒测试&#xff1a;写代码&#xff0c;关注程序具体执行流程。 JUnit单元测试 一个测试框架&#xff0c;供java开发人员编写单元测试。 是程序员测试&#xff0c;即白…