当前位置: 首页 > news >正文

2026/4/25 测试

T1「NOIP模拟」开挂

简单题,容易发现最后的 \(a\) 数组是可以确定的。然后我们举一个简单的例子,假设初始序列 \(a\)2 2 3,最后的 \(a\) 数组就为 2 3 4。然后我们发现就会有两种方案操作,第一种为一个 \(3\) 加一和一个 \(2\) 加一,另一种为一个 \(2\) 加二,于是我们发现无论 \(b\) 是什么,我们总可以让第二种的代价小于等于第一种的代价。所以我们得出结论,让一个数挪得越多,并把最小的 \(b\) 给他越优,就是一个贪心。然后就没了,详细看代码。然后因为要对 \(2^{64}\) 取模,开 unsigned long long 就好了。

#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int N=1e6+5;
int n;
int a[N],b[N],c[N],fx[N];
map<int,int> mp;
bool cmp(int l,int r){return l>r;
}
int find(int x){return fx[x]==x?x:fx[x]=find(fx[x]);
}
void hb(int x,int y){if(a[x]+c[x]>=a[y]+c[y]){fx[y]=x;}else{fx[x]=y;}return ;
}
signed main(){freopen("openhook.in","r",stdin);freopen("openhook.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){fx[i]=i;}for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){cin>>b[i];}sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){if(mp[a[i]]==0){mp[a[i]]=i;c[i]=0;if(mp[a[i]-1]!=0){int kl=find(mp[a[i]-1]);hb(kl,find(i));}if(mp[a[i]+1]!=0){int kl=find(mp[a[i]+1]);hb(kl,find(i));}}else{int kl=find(mp[a[i]]);mp[a[kl]+c[kl]+1]=i;c[i]=a[kl]+c[kl]+1-a[i];hb(kl,find(i));if(mp[a[kl]+c[kl]+2]!=0){kl=find(mp[a[kl]+c[kl]+2]);hb(kl,find(i));}}}sort(c+1,c+1+n,cmp);sort(b+1,b+1+n);int ans=0;for(int i=1;i<=n;i++){ans=ans+c[i]*b[i];}cout<<ans<<'\n';return 0;
} 

T2「NOIP模拟」叁仟柒佰万

好题。首先有一个结论,不管你怎么分,每一段的 \(mex\) 等于整个序列的 \(mex\)

证明如下:如果有一种划分,令其每一段的 \(mex\)\(x\)

\(x<mex\) 时,因为 \(0\)\(mex-1\) 的数全部都在序列中出现过了,所以不管你怎么划分,肯定有一段会被分到一个 \(x\),此时这一段的 \(mex\) 就无法取到 \(x\),矛盾。

\(x>mex\) 时,显然不可能,矛盾。

所以我们知道这个结论后,就很好做了。因为我们要求的是区间数量,对于区间数量有一个很经典的方法,定一求一。我们枚举区间的右端点 \(r\),定义 \(l\) 为最大的满足 \(l\)\(r\) 这个区间的 \(mex\) 等于整个序列的 \(mex\) 的位置,容易发现 \(1\)\(l\) 都满足这个条件,所以有 \(dp_i\) 表示前 \(i\) 个位置的方案数,转移为 \(dp_r=1+\sum_{i=1}^{l-1}dp[i]\) 然后弄个前缀和就好了。详细看代码。

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
const int N=3e7+7e6+5;
int n,a[N],vis[N];
int sum[N];
int ksm(int x,int y){int res=1;while(y){if(y&1)res=(long long)res*x%mod;x=(long long)x*x%mod;y>>=1;}return res;
}
void sl(){int n;cin>>n;if(n==37000000){long long x,y;cin>>x>>y; a[1]=0;for(int i=2;i<=n;i++){a[i]=(x*a[i-1]+y+i)&(262143);}}else{for(int i=1;i<=n;i++){cin>>a[i];}}int mex=0;for(int i=1;i<=n;i++){vis[a[i]]++;while(vis[mex]){mex++;}}for(int i=1;i<=n;i++){vis[a[i]]--;}if(mex==0){cout<<ksm(2,n-1)<<'\n';return ;}int l=1,cnt=0;sum[0]=1;for(int i=1;i<=n;i++){if(a[i]<mex&&vis[a[i]]==0) cnt++;sum[i]=0;vis[a[i]]++;if(cnt==mex){while(1){if(vis[a[l]]==1 && a[l]<mex)break;else{vis[a[l++]]--;}}sum[i]+=sum[l-1];sum[i]%=mod;}sum[i]=(sum[i]+sum[i-1])%mod;}cout<<(sum[n]-sum[n-1]+mod)%mod<<'\n';while(l<=n){vis[a[l++]]--;}
}
signed main(){freopen("clods.in","r",stdin);freopen("clods.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){sl();}return 0;
}

T3「NOIP模拟」超级加倍

神秘好题。嗯,我们的老师在讲这道题的时候有一句话:“对于这种树上最值问题就要考虑 \(Kruskal\) 重构树啊。”嗯,所以这道题就是 \(Kruskal\) 重构树,我们建两棵重构树,其中一颗树 \(a\) 的边权为边两端点编号的最小值,相反另一颗树 \(b\) 就是最大值,如果在 \(a\) 中,\(x\)\(y\)\(lca\) 的权值为 \(x\),在 \(b\) 中,\(x\)\(y\)\(lca\) 的权值为 \(y\)。就是一条合法路径,也就是说一条路径 \(x\)\(y\)\(x\le y\)),如果 \(adfn_x>adfn_y\)\(bdfn_x<bdfn_y\)。则路径合法,然后就没有了。

没有代码。

http://www.jsqmd.com/news/707932/

相关文章:

  • 攻克XYFlow节点定位难题:从测试到实战的完整解决方案
  • Lean3定理证明器10个核心概念:从基础类型到高阶证明
  • Compose LazyList状态管理全解:从滚动监听、恢复,到与Paging3的完美集成
  • 天赐范式第24天:基于能量流形拓扑的化学反应形式化验证框架:天赐范式 v7.5 的收敛性分析与实证报告
  • 预算有限怎么选?国产污水重金属检测仪哪家性价比高?认准宁波普瑞思仪器科技 - 品牌推荐大师
  • OpenBullet2作业管理与监控:构建企业级自动化测试平台
  • 从操作数到智能体:operand/agency框架构建多智能体协作系统实战
  • 告别碎片化:手把手带你用AGL Unified Code Base (UCB) 快速搭建车载原型
  • ZoroCloud测评记录:Intel Gold 6138/1GB内存/100Mbps带宽/9929CMIN2/原生双ISP洛杉矶VPS(Debian GNU/Linux 12)
  • 如何快速生成NW.js专业文档:5个高效工具和最佳实践
  • Claude Code能打开浏览器后,普通人怎么把活交出去丨阿隆向前冲
  • envd TensorBoard集成教程:实时监控深度学习训练进度
  • ext-ds Vector 完全解析:从基础使用到高级技巧
  • 机器学习模型可视化实战:Matplotlib核心技巧解析
  • 告别PS!Qwen-Image-Edit-2509一键部署,用文字就能轻松编辑图片
  • Qianfan-OCR一文详解:单模型搞定OCR/布局分析/多语言提取三合一
  • Elden Ring FPS解锁工具:完整指南与实用技巧
  • 10大Rust算法实战案例:从机器学习到环境监测的完整指南
  • Ryzen SDT:免费开源工具解锁AMD处理器隐藏性能,新手也能轻松上手
  • QQ音乐加密音频完整解密指南:使用qmcdump实现无损转换的终极教程
  • red-python-scripts EXIF数据处理:从图片中提取GPS坐标的完整教程
  • 保姆级教程:用Python脚本+阿里云API,5分钟搞定家庭服务器DDNS动态解析
  • 从手机快充到车载电源:DCDC模块选型后,工程师必须做的5项关键测试(含高低温与负载跳变)
  • 3秒破解百度网盘密码?不,这是更聪明的资源获取方式
  • 抖音视频下载终极指南:免费批量下载高清无水印视频的完整方案
  • 深度解析:Display Driver Uninstaller技术原理与实战应用指南
  • 地图匹配算法:GPS轨迹与道路网络的匹配
  • 从‘No module named tiktoken’聊起:OpenAI开源的这个分词库,到底比HuggingFace快在哪?
  • 如何成为Vim开源编辑器社区的贡献者:完整指南
  • 3分钟玩转Venera:全平台漫画阅读神器终极指南 [特殊字符]