2025-10-15 CSP-J 模拟赛 赛后总结【ZROI】

news/2025/10/16 14:31:49/文章来源:https://www.cnblogs.com/AeeE5x/p/19145553

孩子们,我开了文件读写然后全爆 0 了!!!!!


T1 吃

吃了吧。


题意

\(a\)\(b\) 两个序列,选定一个子串,对于子串的任意一个位置,都可以选择 \(a_i\)\(b_i\) 其一,选定的连续子串合法当且仅当存在一种选法使选择的所有数都相同。

\(1\le n\le 10^5,1\le a_i,b_i\le 5\)


赛时

赛时 20 分钟敲了个转移很显然的 \(O(n)\) dp。结果挂成 10pts。

赛后暴力枚举值域过了。

啥啊原来我转移式写错了,一个位置的 1 写成 0 了。【不对拍的后果】


题解

考虑 \(dp_{i,0/1}\) 表示第 \(i\) 个位置选择 \(a_i\)\(b_i\),以 \(i\) 为结尾的最长合法子串。

显然,当 \(a_{i-1}=a_i\) 时,\(dp_{i,0}\) 可以从 \(dp_{i-1,0}\) 转移。

同理,当 \(b_{i-1}=a_i\) 时,\(dp_{i,0}\) 可以从 \(dp_{i-1,1}\) 转移。

以此类推。总共四个转移式。

最后答案取全局 \(\max\) 再找到符合要求的最小值就行了。这个做法可以推广到 \(a_i,b_i\gt 5\) 的情况。

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3fll
using namespace std;int n;
int a[100010],b[100010];
int dp[100010][2];int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;i++) cin>>a[i]>>b[i];for(int i=1;i<=n;i++) dp[i][0]=dp[i][1]=1;for(int i=2;i<=n;i++){if(a[i]==a[i-1]) dp[i][0]=max(dp[i][0],dp[i-1][0]+1);if(b[i]==b[i-1]) dp[i][1]=max(dp[i][1],dp[i-1][1]+1);if(a[i]==b[i-1]) dp[i][0]=max(dp[i][0],dp[i-1][1]+1);if(b[i]==a[i-1]) dp[i][1]=max(dp[i][1],dp[i-1][0]+1);}int mx=-1;for(int i=1;i<=n;i++) mx=max(mx,max(dp[i][0],dp[i][1]));int ans=inf;for(int i=1;i<=n;i++) for(int j=0;j<=1;j++) if(dp[i][j]==mx) ans=min(ans,(j?b[i]:a[i]));cout<<mx<<" "<<ans;return 0;
}

T2 糖

糖不糖。


题意

给长为 \(n\) 的序列 \(a\) 和正整数 \(m\)。构造一个长为 \(n\) 的序列 \(b\),满足 \(\sum b\le m\)。最小化 \(\sum_{b_i<a_i} (a_i-b_i)^2\),并求出这个最小值。


赛时

赛时摸了个二分+贪心的解法。居然真了。


题解

严格证明太复杂了。考虑简单点的,我们把向 \(b\) 加数转化为向 \(a\) 减数。

首先,初始答案显然为 \(\sum a_i^2\)

对于 \(a_i-1\to a_i\),答案的变化量为 \(-2a_i+1\)。那么显然每次选择最大的数进行操作一定不劣。思考到这里容易想到 \(O(m\log n)\) 的优先队列解法。

考虑优化这个减数的过程。注意到我们会对同一个数反复修改,非常耗费时间。所以我们可以把相等的数合并到一起,并一次性减少到此时序列中的严格次小值(From baieeeeeeeee)。

这是一种办法,但是还是太复杂了。

所以我又想了一个更简单的办法,先二分出来极限情况下能把所有数减少到多少。很显然有单调性,可以二分。

处理出来这个信息之后,再把剩余的数降序排一下,剩下没减的数肯定选择最大值更优。

然后就可以 \(O(n\log V + n\log n)\) 解决了。

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3fll
using namespace std;int n;
long long m;
long long a[100010];bool chk(long long md){long long nw=0;for(int i=1;i<=n;i++) if(a[i]>md) nw+=a[i]-md;return nw<=m;
}int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>m>>n;for(int i=1;i<=n;i++) cin>>a[i];long long l=0,r=LLONG_MAX;while(l<r){long long mid=(l+r)>>1;if(chk(mid)) r=mid;else l=mid+1;}long long nw=0;for(int i=1;i<=n;i++) if(a[i]>l) nw+=a[i]-l,a[i]=l;nw=m-nw;sort(a+1,a+1+n,greater<int>());for(int i=1;i<=n&&nw;i++,nw--) a[i]--;long long ans=0;for(int i=1;i<=n;i++) ans+=a[i]*a[i];cout<<ans; return 0;
}

T3 数

还在数?


题意

给长为 \(n\) 的序列 \(a\)。定义 \(f(s)=\max_{x\in s}x-\min_{x\in s}x\)

\(\sum_{i=1}^{n} \sum_{j=i}^{n} f(a[i:j])\)


赛时

敲了单调栈,但是没处理相等的情况还写挂了。所以全挂了。

第二天补了题,细节真的很多,但不失为一道好题。


题解

考虑拆贡献。

对于每个数 \(a_i\),当其所在序列中不存在比其大的数时,这个数能作为最大值计入答案。

对应的,当其所在序列中不存在比其小的数时,这个数能作为最小值计入答案。

然后把两个情况合起来就是答案了。

用四个单调栈维护就够了。听别人说用线段树,但我感觉完全没必要。

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3fll
using namespace std;int n;
long long a[300010];stack<int> stk;
int fr1[300010],fr2[300010];
int bk1[300010],bk2[300010];int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){while(!stk.empty()&&a[stk.top()]>=a[i]) stk.pop();if(stk.empty()) fr1[i]=1;else fr1[i]=stk.top()+1;stk.push(i);}while(!stk.empty()) stk.pop();for(int i=1;i<=n;i++){while(!stk.empty()&&a[stk.top()]<=a[i]) stk.pop();if(stk.empty()) fr2[i]=1;else fr2[i]=stk.top()+1;stk.push(i);}while(!stk.empty()) stk.pop();for(int i=n;i>=1;i--){while(!stk.empty()&&a[stk.top()]>a[i]) stk.pop();if(stk.empty()) bk1[i]=n;else bk1[i]=stk.top()-1;stk.push(i);}while(!stk.empty()) stk.pop();for(int i=n;i>=1;i--){while(!stk.empty()&&a[stk.top()]<a[i]) stk.pop();if(stk.empty()) bk2[i]=n;else bk2[i]=stk.top()-1;stk.push(i);}while(!stk.empty()) stk.pop();long long ans=0;for(int i=1;i<=n;i++){ans+=1ll*(bk2[i]-i+1)*(i-fr2[i]+1)*a[i];ans-=1ll*(bk1[i]-i+1)*(i-fr1[i]+1)*a[i];}cout<<ans;return 0;
}

T4 待补。

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

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

相关文章

辐射检测仪哪家好?CT剂量模体哪家好?

在核辐射监测、放射医疗、环保检测等领域,辐射检测仪的精准性与可靠性直接关系到安全防护与检测效率。面对市场上众多品牌,如何选择合适的厂商?本文结合产品性能、企业实力、资质认证等维度,为您推荐三家优质厂商,…

【2025-10-14】玩玩植物

20:00对人之爱,其目的是帮助人们成为他们所能成为之人。——卡尔雅思贝尔斯周日,我跟何太商量好借带二宝去看医生这事,顺便去逛逛本地最大的花鸟鱼虫市场。确实,整个看医生过程也就不到半小时。剩下的,就是我们一…

2025 木饰面源头厂家最新推荐榜单:21 年深耕企业领衔,背景墙 / 全屋 / 碳晶板 / 岩板全场景适配品牌解析

当前木饰面市场品类繁杂、品牌良莠不齐,采购方常陷入 “选品难、辨质难、适配难” 的三重困境。家装用户纠结环保性能与风格适配性,公装采购担忧产能不足与性能达标问题,中小订单则面临供货周期长、损耗率高的痛点。…

读书笔记:Oracle LOB类型:大数据存储的终极指南

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

2025 年铝塑板源头厂家最新推荐榜:聚焦气候适配与品质服务,西南及全国优质供应商精选,含门头 / 墙面 / 外墙等场景专款

2025 年建筑装饰行业对铝塑板的气候适配性、耐用性与服务效率要求持续升级,但市场仍存在 “选品难、辨质难” 的痛点:部分产品因原材料劣质导致防火与抗折性能不达标,通用型板材难以适配西南高海拔强紫外线等特殊气…

2025年散装物料输送设备厂家最新品牌推荐榜:刀闸阀/换向阀/旋转阀厂家权威甄选,核心竞争力深度解析!

在散装物料输送系统中,刀闸阀主要用于切断或接通物料流,特别适合处理高磨损性、粘性或含纤维的粉粒状物料,其锋利的闸板能有效防止堵塞;换向阀则用于改变物料的输送路径,实现从主管道向多个料仓或设备的灵活分配,…

【2025-10-13】平凡父母

20:00也许宇宙间最反直觉的真理是:你给予的越多,你得到的就越多。理解这一点,是智慧的开端。——凯文凯利今早起床时,何太摸了摸二宝的额头,发烧了。我立马给她测了一下体温,38.6度。难怪二宝大半夜一直在咿咿呀…

Oracle故障处理:轻松搞定ORA-01190报错

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle故障处…

【2025-10-15】农村自建房

20:00让你痛苦的不是别人,而是你的想法。——理查德S拉扎勒斯昨晚,老家要好的一位朋友,问我认不认识盖房子的本地包工头。后来得知,他想把他老家农村的空置宅基地给建了。但我挺好奇的,他本身就是做建筑相关行业,…

EAS_接口新增单据提示没有组织单据新增权限

二开的接口,新增的时候,提示么有组织的接口同步单据的新增权限,接口用户用A,在客户端给用户A分了权限后,发现并没有用,仔细检查代码,能够发现,在代码中,重新设置了接口的上下文,当单据提交时候,实际上是用该…

集成驱动安全:Synack如何通过技术整合提升安全效能

本文详细介绍了Synack渗透测试即服务平台如何通过与主流安全工具集成,帮助企业提升漏洞修复效率达63%,修补效能提升近20%,实现智能化的风险优先排序和自动化修复流程。效率与影响:Synack集成如何提升安全成果 “效…

测试编辑器功能:标题、列表、代码块。测试

测试编辑器功能:标题、列表、代码块。测试功能方面Markdown 编辑器:支持大部分 Markdown 语法,对于标题、列表、代码块的创建有特定的语法规则。例如,使用 “#”“##”“###” 等可以快速创建不同级别的标题;使用…

283.移动零

283.移动零Posted on 2025-10-16 14:08 lachesism 阅读(0) 评论(0) 收藏 举报给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地…

全自动红外测油仪厂家推荐/国产红外测油仪品牌推荐/靠谱供应商采购推荐

在环境监测、石油化工、污水处理等诸多领域,全自动红外测油仪作为检测水中石油类和动植物油含量的关键设备,其精准度与效率直接影响着水质评估与污染治理效果。天津众科创谱科技有限公司凭借深厚的技术积累、过硬的产…

洛谷P4516 [JSOI2018] 潜入行动

朴素的设计 \(DP\),\(dp_{i,j,0/1,0/1}\) 表示 \(i\) 的子树选了 \(j\) 个点,当前选没有,当前被覆盖没有。 令人火大的转移方程(具体转移边界还请看代码): \[\begin{align}&dp_{u,j,0,0} = \sum_{k=1}^{siz_…

Mysql1064,最常见的语法错误

MySQL 错误代码 1064 是最常见的语法错误,表示 SQL 语句存在语法问题,数据库无法解析。通常提示信息会包含具体错误位置(如 near ... at line N)。 常见原因及解决方法:SQL 语法错误(最常见) 拼写错误:关键字写…

一对一直播源码搭建:后来者的源码选择与专业研发的关键考量

在当今数字化社交蓬勃发展的时代,一对一直播平台正成为众多创业者关注的焦点。如果您正在考虑进入这一领域,但尚未决定是购买源码还是自主研发,亦或是正在寻找专业的开发团队,那么本文将为您提供全面而专业的指导。…

总氮检测仪靠谱供应商,总氮水质分析仪厂家推荐,总磷/氨氮/COD等仪器哪家好?

总氮作为衡量水体富营养化程度的关键指标,其精准检测对于水环境治理、工业废水排放管控及饮用水安全保障至关重要。在总氮水质分析仪的采购过程中,选择技术可靠、性能稳定且服务完善的产品与品牌,是确保检测工作高效…

多领域对话自动评估技术突破

介绍一种基于双向LSTM和注意力机制的新型对话评估模型,该模型在多领域对话中客户满意度预测准确率提升27%,能够泛化应用于不同对话管理系统,无需依赖特定对话行为特征。自动评估与语音助手的对话交互 随着与语音助手…

直面挑战:MySQL 千万级数据高性能优化实战指南

当开发中数据量从百万级跃升至千万级、甚至亿级时,这时候我们该怎么办呢?MySQL 的默认配置和简单的 CRUD 操作将不再适用。一次慢查询、一个锁等待都可能引发雪崩效应,导致整个系统响应缓慢。要驾驭海量数据,所以我…