24.6.16

星期一:

补cf global round26 C2                                                  cf传送门

思路:有效操作2只有一次,且反转后不会再出现负数,即后面能贡献 2^n-i个方案,再乘上前面   2^(k>=0的次数)

代码如下:

ll n;
ll a[N];
ll qpow(int n){
	ll res=1,a=2;
	while(n){
		if(n&1) res=res*a%mod;
		a=a*a%mod;
		n>>=1;
	}
	return res;
}
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i];
	}
	ll sum=0,cmp=0;
	for(int i=1;i<=n;i++){
		sum+=a[i];
		cmp=min(sum,cmp);
	}
	if(!cmp){cout << qpow(n) << "\n"; return ;}
	ll k=0,now=1,ans=0;
	for(int i=1;i<=n;i++){
		k+=a[i];
		if(k==cmp) ans+=qpow(n-i+now-1),ans%=mod;
		now+=k>=0;
	}
	cout << ans << "\n";
}

星期二:

补西南科技第二十届                                                牛客传送门

有点怪的题

思路:

代码如下:

ll n;
void solve(){
	cin >> n;
	int x,y; cin >> x >> y;
	set<int>st1,st2;
	int sa=0;
	for(int i=1;i<=x;i++){
		int w,num; cin >> w >> num;
		st1.insert(w);
	}
	for(int i=1;i<=y;i++){
		int w,num; cin >> w >> num;
		st2.insert(w);
		sa+=st1.find(w)!=st1.end();
	}
	cout << min(min((ll)st1.size()-sa,n/2)+min((ll)st2.size()-sa,n/2)+1ll*sa,n);
}

星期四:

补二十届西南科技 K 差分                                          牛客传送门

罕见的差分题

思路:主要在于如何处理扩散,向两边都扩散,那么可以正着跑一遍处理向右扩散,反着处理向左

对于所有操作,做个前缀差分和后缀差分,cnt 记录当前有多少个在扩散的点,w记录点的权值

代码如下:

const int N=2e6+10;
ll n;
int pre[N],pos[N],w[N];
ll a[N];
void solve(){
	int m; cin >> n >> m;
	while(m--){
		int a,b,c; cin >> a >> b >> c;
		if(a==1){
			w[b]+=c;
			pre[b]++,pre[b+c]--;
			pos[b]++,pos[max(0,b-c)]--;
		}else{
			w[b]-=c;
			pre[b]--,pre[b+c]++;
			pos[b]--,pos[max(0,b-c)]++;
		}
	}
	ll sum=0,cnt=0;
	for(int i=1;i<=n;i++){
		sum+=w[i]-cnt;
		cnt+=pre[i];
		a[i]=sum;
	}
	sum=0,cnt=0;
	for(int i=n;i;i--){
		sum+=w[i]-cnt;
		cnt+=pos[i];
		a[i]+=sum-w[i];
	}
	for(int i=1;i<=n;i++) cout << a[i] << " ";
}

顺手做的区间dp                                                                vj传送门

代码如下:

ll n;
ll dp[1010][1010];
void solve(){
	string s; cin >> s;
	n=s.size(); s=" "+s;
	memset(dp,0x3f,sizeof dp);
	for(int i=1;i<=n;i++){
		dp[i][i]=0;
		if(i<n && s[i]==s[i+1]) dp[i][i+1]=0;
	}
	for(int len=1;len<n;len++){
		for(int l=1;l+len-1<=n;l++){
			int r=l+len-1;
			if(l<r-1 && s[l]==s[r]) dp[l][r]=min(dp[l+1][r-1],dp[l][r]);
			if(l>1){
				if(s[l-1]==s[r]) dp[l-1][r]=min({dp[l][r-1],dp[l][r]+1,dp[l-1][r]});
				else dp[l-1][r]=min(dp[l][r]+1,dp[l-1][r]);
			}
			if(r<n){
				if(s[l]==s[r+1]) dp[l][r+1]=min({dp[l+1][r],dp[l][r]+1,dp[l][r+1]});
				else dp[l][r+1]=min(dp[l][r]+1,dp[l][r+1]);
			}
		}
	}
	cout << dp[1][n];
}

星期五:

dp求方案数                                                          vj传送门

思路:dp【i】【j】表示第 i个阶段,状态值为 j的方案数

dp[i][j]=\sum_{k=l[i-1]}^{j-1}dp[i-1][k],用前缀和优化一下就行,注意不要漏掉 i-1的方案数

代码如下:

const int mod=998244353;
ll n;
ll l[220],r[220];
ll dp[220][10004];
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> l[i] >> r[i];
	}
	for(int i=l[1];i<=r[1];i++) dp[1][i]=1;
	int bt=l[1];
	for(int i=2;i<=n;i++){
		bt=max(l[i],1ll*bt+1);
		for(int j=l[i-1];j<bt;j++) dp[i-1][j]+=dp[i-1][j-1],dp[i-1][j]%=mod;//前缀和
		for(int j=bt;j<=r[i];j++){
			dp[i][j]+=dp[i-1][j-1],dp[i][j]%=mod;
			dp[i-1][j]+=dp[i-1][j-1],dp[i-1][j]%=mod;//前缀和
		}
	}
	ll ans=0;
	for(int i=bt;i<=r[n];i++) ans+=dp[n][i],ans%=mod;
	cout << ans << "\n";
}

很典的完全背包方案数                                          vj传送门

虽然很典,但还是调了一会儿,主要在一些细节上不太熟悉

代码如下:

const int N=1e5+10;
const int mod=1e9+7;
ll n;
ll dp[N];
int a[]={0,1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};
void solve(){
	cin >> n;
	for(int i=0;i<=n;i++) dp[i]=1;
	for(int i=2;i<=13;i++){
		for(int j=a[i];j<=n;j++)
			dp[j]+=dp[j-a[i]],dp[j]%=mod;
	}
	cout << dp[n];
}

上楼梯3                                                                     vj传送门

需要推式子的转移

思路:

代码如下:

const int N=1e5+10;
ll n;
const int p=100003;
ll dp[N];
void solve(){
	cin >> n;
	dp[1]=1;
	dp[2]=1;
	for(int i=3;i<=n;i++)
		dp[i]=(dp[i-1]+dp[i-3])%p;
	cout << dp[n];
}

线性dp                                                          vj传送门

思路:dp【i】【0/1】表示考虑到第 i个,第 i个选 1或b【i】的最大值

代码如下:

const int N=2e6+10;
ll n;
int b[N];
ll dp[N][2];
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++) cin >> b[i];
	for(int i=2;i<=n;i++){
		dp[i][0]=max(dp[i-1][0],dp[i-1][1]+b[i-1]-1);
		dp[i][1]=max(dp[i-1][0]+b[i]-1,dp[i-1][1]+abs(b[i]-b[i-1]));
	}
	cout << max(dp[n][0],dp[n][1]);
}

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

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

相关文章

Linux源码阅读笔记05-进程优先级与调度策略-实战分析

基础知识 Linux 内核当中有 3 种调度策略&#xff1a; SCHED_OTHER 分时调度策略&#xff1b;SCHED_FIFO 实时调度策略&#xff0c;先到先服务&#xff1b;SCHED_RR 实时调度策略&#xff0c;时间片轮转。 如果有相同优先级的实时进程&#xff08;根据优先级计算的调度权值是…

用一个实例看如何分享大量照片 续篇一

继续上篇的实例分享&#xff0c;在此罗列一些应该注意的细节&#xff0c;以便在下次可以更加省时省力。 最重要的是呈现构想&#xff0c;如按活动/主题、班级/板块、地区/国家等等&#xff0c;这些都应该事先计划好&#xff0c;事后改动工作量巨大&#xff0c;因为太容易出错&a…

redis高可用-主从同步

目录 一&#xff1a;背景 二&#xff1a;实现方式 三&#xff1a;实际使用 一&#xff1a;背景 上一节我们介绍了centos下redis下的安装配置&#xff0c;是在单台服务器部署一个redis服务&#xff0c;这种模式是单机模式下使用的&#xff0c;如果出现服务故障&#xff0c;re…

windows11关闭microsoft defender实时保护后会自动打开,怎么不让他打开

Windows 11中关闭Microsoft Defender的实时保护 打开windows安全中心 --> 点击病毒和威胁防护 --> 点击管理设置 -->关闭实时保护 单关闭后系统可能会在一段时间后自动重新开启以确保系统安全。如果你确实需要永久关闭实时保护&#xff0c;可以尝试以下方法。但请注…

RecyclerVIew->加速再减速的RecyclerVIew平滑对齐工具类SnapHelper

XML文件 ItemView的XML文件R.layout.shape_item_view <?xml version"1.0" encoding"utf-8"?> <FrameLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"100dp"android:layout_heig…

199.罗马数字转整数(力扣)

代码解决 class Solution { public:// 定义一个哈希表来存储罗马数字符号及其对应的整数值unordered_map<char, int> res {{I, 1},{V, 5},{X, 10},{L, 50},{C, 100},{D, 500},{M, 1000},};// 将罗马数字字符串转换为整数的函数int romanToInt(string s) {int num 0; …

【golang学习之旅】Go中的变量——基本数据类型(2)

系列文章 【golang学习之旅】使用VScode安装配置Go开发环境 【golang学习之旅】报错&#xff1a;a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】深入理解字符串string数据类型 【golang学习之旅】go mod tidy 【golang学习之旅】记录一次 p…

pdf压缩大小,PDF压缩大小不影响清晰度

你是否曾为PDF文件过大而烦恼&#xff1f;想要分享或上传文件时&#xff0c;却因为它的体积而束手无策&#xff1f;别担心&#xff0c;今天我将为大家分享一些简单实用的 PDF 压缩技巧&#xff0c;让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”&#xff0c; 的网站。然后上…

解决Element-ui的el-table固定列后出现的表格错位问题

问题情况大致是这样的&#xff1a; 查看官网 解决办法&#xff1a;

《计算机英语》 Unit 4 Information Management 信息管理

Section A Information Storage 信息存储 1. The importance of Information信息的重要性 词汇 reside vi属于&#xff0c;驻留 tablet n平板电脑 laptop n笔记本电脑 repository n仓库 claim n索赔 regulatory n法规 contractua…

苹果手机备忘录怎么长截屏或者导出

在快节奏的生活中&#xff0c;手机备忘录已成为我们随时记录重要信息和灵感的得力助手。然而&#xff0c;当我们想要保存或分享备忘录中的长内容时&#xff0c;苹果手机的截屏功能似乎就显得有些捉襟见肘了。 那么&#xff0c;苹果手机备忘录如何进行长截屏或者导出呢&#xf…

麻了!一觉醒来,代码全挂了。。

作为⼀名程序员&#xff0c;相信大家平时都有代码托管的需求。 相信有不少同学或者团队都习惯把自己的代码托管到GitHub平台上。 但是GitHub大家知道&#xff0c;经常在访问速度这方面并不是很快&#xff0c;有时候因为网络问题甚至根本连网站都打不开了&#xff0c;所以导致…

计算机Java项目|基于SpringBoot的厨艺交流平台设计与实现

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…

STM32介绍和资料地址

STM32标准外设软件库 https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html 支持标准外设库的产品系列&#xff1a;

GWB—200JA型引伸计标定器

GWB一200JA型引伸计标定器&#xff0c;是一种纯机械式的高精度位移测微仪器。依据JJG762—2007引伸计检定规程要求&#xff0c;专门用于对各类引伸计的标定&#xff0c;也广泛用于位移传感器的检定及相应百分表、千分表的标定。 l、本仪器由精密微分测头及测量支架组成。该标定…

内网使用nexus3搭建npm私库方法

内网使用nexus3搭建npm私库大致分为下载tgz和批量上传两个步骤。如下。 第一步&#xff0c;批量下载tgz依赖。 新建一个文件夹&#xff0c;比如download&#xff1b;拷贝出项目中package.json或者package-lock.json。放进download文件夹中&#xff1b;确保电脑本地已经安装好n…

盛元广通数字孪生智能集控实验室管理系统

盛元广通数字孪生智能集控实验室管理系统可广泛应用于各类实验室场景&#xff0c;包括科研实验室、教学实验室、工业实验室等。通过实时监测、预测性维护、故障诊断与优化等功能&#xff0c;该系统能够提高实验室的运行效率、安全性和可靠性&#xff0c;降低运维成本。设计直观…

找出一个整型数组中的元素的最大值

这个问题在之前的文章中曾用其他方法解决&#xff0c;现在用类来处理&#xff0c;读者可以比较不同方法的特点。 编写程序&#xff1a; 运行结果&#xff1a; 程序分析&#xff1a; 程序看起来比较长&#xff0c;其实并不复杂&#xff0c;它包括以下3部分&#xff1a;…

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 泛型编程 首先让我们来思考一个问题&#xff0c;如何实现一个交换函数&#x…