【比赛记录】2025CSP-S模拟赛58

news/2025/10/4 21:40:42/文章来源:https://www.cnblogs.com/zhangxyhp/p/19125953
A B C D Sum Rank
- 25 20 75 120 19/25

乱序放题,被 T1 硬控了啊啊啊啊啊

A. 铁轨

B. 参加

看到区间操作想到差分,设差分数组为 \(b\),那么要求即为 \(\forall i\in[1,k],b_i>0,\forall i\in[k+1,n],b_i<0\)。最小操作数即为前后的 \(\max\)

Code
#include<bits/stdc++.h>
#define int long long
#define il inline
using namespace std;
namespace asbt{
const int maxn=2e5+5,inf=1e18;
int n,a[maxn];
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int pre=0,suf=0;for(int i=n;i>1;i--){a[i]-=a[i-1];if(a[i]>=0){suf+=a[i]+1;}}
//	for(int i=1;i<=n;i++){
//		cout<<a[i]<<' ';
//	}
//	cout<<'\n';int ans=inf;for(int i=1;i<=n;i++){
//		cout<<i<<' '<<pre<<' '<<suf<<'\n';ans=min(ans,max(pre,suf));if(a[i+1]<0){pre-=a[i+1]-1;}else if(a[i+1]>0){suf-=a[i+1]+1;}else{pre++,suf--;}}cout<<ans;return 0;
}
}
signed main(){return asbt::main();}

C. 决斗

首先考虑求出最大得分,考虑权值线段树,合并时用左区间的 \(A\) 数量和右区间的 \(B\) 数量贡献即可。考虑构造解,对每一位二分,考察取掉这个数后能否在线段树上凑出答案即可。时间复杂度线性对数方。

Code
#include<bits/stdc++.h>
#define int long long
#define il inline
#define lid id<<1
#define rid id<<1|1
using namespace std;
namespace asbt{
const int maxn=1e5+5;
int n,a[maxn],b[maxn];
int tr[maxn<<2][2],sum[maxn<<2],sz[maxn<<2];
il void pushup(int id){sum[id]=sum[lid]+sum[rid]+min(tr[lid][0],tr[rid][1]);tr[id][0]=max(tr[lid][0]-tr[rid][1],0ll)+tr[rid][0];tr[id][1]=tr[lid][1]+max(tr[rid][1]-tr[lid][0],0ll);sz[id]=sz[lid]+sz[rid];
}
il void add(int id,int l,int r,int p,bool opt,int v){if(l==r){tr[id][opt]+=v;if(opt){sz[id]+=v;}return ;}int mid=(l+r)>>1;if(p<=mid){add(lid,l,mid,p,opt,v);}else{add(rid,mid+1,r,p,opt,v);}pushup(id);
}
il int rank(int id,int l,int r,int p){if(l==r){return sz[id];}int mid=(l+r)>>1;if(p<=mid){return rank(lid,l,mid,p);}else{return sz[lid]+rank(rid,mid+1,r,p);}
}
il int kth(int id,int l,int r,int k){if(l==r){return l;}int mid=(l+r)>>1;if(sz[lid]>=k){return kth(lid,l,mid,k);}else{return kth(rid,mid+1,r,k-sz[lid]);}
}
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];add(1,1,1e5,a[i],0,1);}for(int i=1;i<=n;i++){cin>>b[i];add(1,1,1e5,b[i],1,1);}int tar=sum[1],cur=0;for(int i=1;i<=n;i++){add(1,1,1e5,a[i],0,-1);int c=rank(1,1,1e5,a[i]);int l=c+1,r=sz[1],res=0;while(l<=r){int mid=(l+r)>>1;int t=kth(1,1,1e5,mid);add(1,1,1e5,t,1,-1);if(sum[1]+1+cur==tar){l=mid+1,res=mid;}else{r=mid-1;}add(1,1,1e5,t,1,1);}if(!res){l=1,r=c;while(l<=r){int mid=(l+r)>>1;int t=kth(1,1,1e5,mid);add(1,1,1e5,t,1,-1);if(sum[1]+cur==tar){l=mid+1,res=mid;}else{r=mid-1;}add(1,1,1e5,t,1,1);}}res=kth(1,1,1e5,res);add(1,1,1e5,res,1,-1);cur+=(res>a[i]);
//		cout<<res<<'\n';cout<<res<<' ';}return 0;
}
}
signed main(){return asbt::main();}

D. 回文串问题

发现只要长度相同那么一定不会出现 Not equal。考虑并查集,并对字符串进行哈希。时间复杂度瓶颈有两个:合并和维护哈希值。

考虑最终顶多将所有点都合并成一个点,也就是说暴力合并的话有许多合并操作都是多余的。考虑不断二分出 lcp 后对下一个位置进行合并,于是顶多合并 \(O(n)\) 次。而哈希值,可以用树状数组维护。但是我们每次合并,哈希值要改变的位置是有很多的,启发式合并即可。时间复杂度线性对数方。

Code
#include<bits/stdc++.h>
#define ull unsigned long long
#define il inline
using namespace std;
namespace asbt{
const int maxn=1e5+5;
const ull bas=1e5+393;
int n,m,fa[maxn];
ull pw[maxn];
set<int> s[maxn];
struct{#define lowbit(x) (x&-x)ull tr[maxn];il void add(int p,ull v){for(;p<=n;p+=lowbit(p)){tr[p]+=v;}}il ull query(int p){ull res=0;for(;p;p-=lowbit(p)){res+=tr[p];}return res;}#undef lowbit
}F1,F2;
il int find(int x){return x!=fa[x]?fa[x]=find(fa[x]):x;
}
il void merge(int u,int v){u=find(u),v=find(v);if(u==v){return ;}if(s[u].size()>s[v].size()){swap(u,v);}fa[u]=v;for(int x:s[u]){s[v].insert(x);F1.add(x,(v-u)*pw[x]);F2.add(n-x+1,(v-u)*pw[n-x+1]);}
}
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n>>m;pw[0]=1;for(int i=1;i<=n;i++){fa[i]=i,s[i].insert(i);pw[i]=pw[i-1]*bas;F1.add(i,i*pw[i]);F2.add(i,(n-i+1)*pw[i]);}while(m--){int opt,l,r,x,y;cin>>opt>>l>>r;if(opt==1){
//			puts("666");int ll=1,rr=(r-l+1)>>1;while(ll<=rr){while(ll<rr){int mid=(ll+rr)>>1;ull hl=F1.query(l+mid-1)-F1.query(l-1);ull hr=F2.query(n-r+mid)-F2.query(n-r);if(hl*pw[n-r+1]==hr*pw[l]){ll=mid+1;}else{rr=mid;}}
//				cout<<l+ll-1<<' '<<r-ll+1<<'\n';merge(l+ll-1,r-ll+1);ll++,rr=(r-l+1)>>1;}}else{cin>>x>>y;if(r-l!=y-x){cout<<"Not equal\n";}else{ull hl=F1.query(r)-F1.query(l-1);ull hx=F1.query(y)-F1.query(x-1);cout<<(hl*pw[x]==hx*pw[l]?"Equal":"Unknown")<<'\n';}}}return 0;
}
}
int main(){return asbt::main();}

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

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

相关文章

怎么外贸网站推广欧派家居全屋定制价格多少钱一平

我想知道如何将日期从Hive转移到MySQL&#xff1f;我已经看到了如何将hive数据移动到Amazon DynamoDB而不是像MySQL这样的RDBMS的示例.以下是我在DynamoDB中看到的示例&#xff1a;CREATE EXTERNAL TABLE tbl1 ( name string, location string )STORED BY org.apache.hadoop.hi…

油画风网站网站开发z亿玛酷1负责

文章目录 灰度发布&#xff0c;作用是&#xff1f;测试计划中测试开始条件一般包括哪些内容测试计划中的测试结束条件一般包含哪些内容测试人员是否需要代码能力&#xff0c;应用在哪些方面测试人员参与代码审核&#xff0c;重点关注什么产品上线后发现问题&#xff0c;如何产品…

Kafka06-进阶-尚硅谷 - 实践

Kafka06-进阶-尚硅谷 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

回忆有感

有意思发现自己小学~初一阶段特别喜欢写诗/杂文并分享到QQ动态里面:科技与自然 孤鸿 小时候,对雨总是有种莫名的期盼:雨天,身披着雨衣,脚穿着雨鞋,独自在雨中漫步。踩一脚水洼,看那点点晶莹的水珠如花儿般绽放,…

北京高端网站建设价格网站广东省备案

前面学习完怎么搭建个人博客&#xff0c;后面要做的就是排版优化自己的博客了&#xff0c;今天通过教程学习到了然后更爱美化其中的效果&#xff0c;还通过改写代码来带到基本的效果展示&#xff0c;同时也把最开始学习的计算速成课的笔记输出在上面&#xff0c;这也是一个很好…

框架高效的系统的演进如何塑造人工智能的深层语义分析能力

框架高效的系统的演进如何塑造人工智能的深层语义分析能力pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

『回忆录』高二上第一次月考——压力下的崛起,意料外的突破

初入高二的第一月,第一次进年级 20。明天晚上写,留坑。 最近一直想写回忆录,但是每当有机会坐在电脑面前码字时脑子基本上都是一片空白,再加上可能有家长催促睡觉没有什么灵感。明天晚上是最好的时间了,一回来就写…

AutoCAD 2025安装包下载 CAD免费下载 永久免费激活 附详细安装教程

一、软件下载链接软件名称:CAD2025软件大小:2.69GB安装环境:Win10以及以上下载链接: 夸克网盘:https://pan.quark.cn/s/f6eebbc21976 迅雷网盘::https://pan.xunlei.com/s/VOajN0S5FvdahBySrZeSj-L6A1?pwd=mg7…

深度学习(1)-利用Pytorch2结合U-Net大模型实现图像降噪 - 教程

深度学习(1)-利用Pytorch2结合U-Net大模型实现图像降噪 - 教程2025-10-04 21:23 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !imp…

炫酷的html5网站电商小程序源码

参数级联查询是查询控件之间的一种互动方式&#xff0c;比如在某个下拉框选定选项后&#xff0c;另一个下拉框里的选项范围会随之变化。润乾报表提供了多种编辑风格&#xff0c;每种编辑风格都有丰富的属性&#xff0c;以此为基础实现参数级联查询也很简单。下面就通过一个例子…

缓存便捷的技术揭秘

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

在哪进入网站后台汽车行业网站设计

解析 一直在路径可逆上做功夫&#xff0c;跑偏了。 题目可以转化为一个模型&#xff1a;给出一张无向图&#xff0c;每次可以移动到未移动过的点上&#xff0c;不能移动者判负。 这个的做法就是判断是否完美匹配&#xff0c;完美匹配则后手必胜&#xff0c;否则先手必胜。 …

微分和积分的区别

微分和积分的区别微分和积分是互逆的两种运算,就像加法和减法、乘法和除法一样。微分就像“拆解”或“显微镜”:给你一个完整的物体(函数),你用微分去研究它在某一个极小的点上的瞬间变化率和性质(比如求瞬时速度…

网站突然排名没了网页设计服务公司

文章目录 推荐 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

广西新农村建设工作专题网站wordpress 4.8正式版

标准模版库STL <algorithm> 算法库 max, min 用于找出一组值中的最大值和最小值 swap 用于交换两个变量的值 sort 用于对一个范围内的元素进行排序 lower_bound, upper_bound 用于在已排序的容器中查找元素的下界和上界 unique(a,an)-a 用于在一个范围内删除相邻重…

202509_QQ_secret

图片隐写,BMP,StegSolveTags:图片隐写,BMP,StegSolve,Analysis-File 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202509_QQ_secret.zip 0x01. WP…

网站开发视频教程迅雷下载凡客诚品简介

一日不见如隔三秋&#xff0c;本人觉得有界变差函数是实变函数中最容易理解且和高等数学联系最紧密的一个概念&#xff0c;其在概率论中也有非常广泛的应用&#xff0c;也和勒贝格空间有着千丝万缕的联系。什么叫有界变差函数&#xff1f;若在区间(a&#xff0c;b)中&#xff0…

创世网站网络建设鑫牛元网站建设

转自个人微信公众号【Memo_Cleon】的统计学习笔记&#xff1a;协方差分析&#xff1a;方差分析与线性回归的统一。在进行数据分析时&#xff0c;有时候我们会遇到数据基线不平的情况&#xff0c;比如两样本的t检验的示例&#xff0c;比较Labe和Meto用药13周的降压效果&#xff…

4 对拍杂谈

对拍杂谈 0 前言 关于对拍,一句话描述清楚它的重要性:相当于数学中的验算。 我们oi中不能只凭感觉来判断一个程序的正确性,而要靠对拍来确定程序正确性。 当然,对拍过了也不能说明你的程序就一定正确,毕竟数据是你…

网站美工设计详细步骤珠海市手机网站建设公司

文章目录 435.无重叠区间按右边界排序CPP代码 按左边界排序如何判断相邻区间是否重叠如何判断一下一个区间与当前相邻区间是否重叠总结CPP代码 763.划分字母区间思路伪代码实现CPP代码 56. 合并区间思路CPP代码 435.无重叠区间 力扣题目链接 文章链接&#xff1a;435.无重叠区间…