CF417B题解
CF417B题解
博客里使用更佳。
思路
简单的模拟,稍微的分析加上分类讨论就 AC 啦~
做法
首先,我们要用一个数组 a 来记录记录编号等于它下标的人发送了几个方案,然后就开始开心的模拟:每行输入一个 x(在与 A 相同的第一个程序之前发送的不同程序的数量),k(参赛者的编号,即程序的作者)。
然后就分为以下几种情况:
- x<a[k],就说明输入的方案数比记录的少,也就是说这次的方案与之前相同的方案中的其中一个相等,所以就不用做任何处理。
- x=a[k],说明这是一种新的情况,相应的 a[k]+1。
- x>a[k],也就是说输入的方案比记录的还多,不正确,此时可以直接输出 NO 结束程序。
分析就到此为止啦~
总结
- 简单的纯模拟
- 分析加分类讨论
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[1000005],n;
//a数组来记录编号等于它下标的人发送了几个方案。
int main(){
scanf("%d",&n);
for(int i=1; i<=n; i++){
int x,k;
scanf("%d %d",&x,&k);
if(x==a[k]) a[k]++;//有一个情况和记录的a[k]相等,说明这是一种新的情况,a[k]++
else if(x>a[k]){//如果x大于a[k],也就是说输入的方案比记录的还多,不正确。
printf("NO");
return 0;//直接结束程序。
}
//else if(x<a[k]) 这种情况不做处理。
}
printf("YES");//要是要输出NO,前面已经结束程序,能撑过前面的循环就表明数据是按照顺序输入的。
return 0;
}
//完结撒花✿✿ヽ(°▽°)ノ✿。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现