CF417B题解

CF417B题解

博客里使用更佳。

思路

简单的模拟,稍微的分析加上分类讨论就 AC 啦~

做法

首先,我们要用一个数组 a 来记录记录编号等于它下标的人发送了几个方案,然后就开始开心的模拟:每行输入一个 x(在与 A 相同的第一个程序之前发送的不同程序的数量),k(参赛者的编号,即程序的作者)。

然后就分为以下几种情况:

  1. x<a[k],就说明输入的方案数比记录的少,也就是说这次的方案与之前相同的方案中的其中一个相等,所以就不用做任何处理。
  2. x=a[k],说明这是一种新的情况,相应的 a[k]+1
  3. x>a[k],也就是说输入的方案比记录的还多,不正确,此时可以直接输出 NO 结束程序。

分析就到此为止啦~

总结

  1. 简单的纯模拟
  2. 分析加分类讨论

代码

#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; 
} 
//完结撒花✿✿ヽ(°▽°)ノ✿。
posted @   naroto2022  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
花开如火,也如寂寞。