专栏文章
题解:P13959 [ICPC 2023 Nanjing R] 计数器
P13959题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minzhy5m
- 此快照首次捕获于
- 2025/12/02 10:53 3 个月前
- 此快照最后确认于
- 2025/12/02 10:53 3 个月前
题意
很直白,描述一个计数器,只有增加一和归零两种操作,给定 个约束条件,问能否全部满足(怎么感觉这一段好没用)
思路
首先,显而易见的,需要把输入数据按时间(题目里的 )排序,然后对于每个 满足 ,有以下两种情况:
- 若 ,则可以一直按加号。
- 第二种的情况条件需要注意,只要不满足前一种条件,无论如何,必须使用归零键。首先,通过求出 可以求出最多可以按加号的次数(减一是因为要归零),如果这个数大于等于 ,则可以满足条件,否则不能
通过循环统计条件可行性,在一个数据中,只要有至少一组输入不满足,则输出
No,否则输出 Yes。代码来喽
CPP#include<bits/stdc++.h>
using namespace std;
struct node{
int a,b;
};
node v[100005];
bool cmp(node x,node y){return x.a<y.a;}
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>v[i].a>>v[i].b;
}
sort(v+1,v+m+1,cmp);
bool flag=1;
for(int i=1;i<=m;i++){
if(v[i].a-v[i-1].a==v[i].b-v[i-1].b){flag=1;}
else{
if(v[i].a-v[i-1].a-1>=v[i].b)flag=1;
else{flag=0;break;}
}
}
if(flag)cout<<"Yes";
else cout<<"No";
cout<<endl;
}
}
温馨提示:代码经过改动,有防抄袭措施,切勿直接复制,切勿直接复制,会编译错误!
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...