专栏文章
P13733 [JOIGST 2025] 扑克 / Poker
P13733题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio9i0ct
- 此快照首次捕获于
- 2025/12/02 15:33 3 个月前
- 此快照最后确认于
- 2025/12/02 15:33 3 个月前
题目传送门
题目大意:有 个数进行大小排序并去重,然后如果有个不重复的数差为 。就输出 Yes,否则输出 No。
———————————————————————————
把 个数进行大小排序并去重正是桶排序的特点。
把 个数进行大小排序并去重正是桶排序的特点。
RE代码:
CPP#include<bits/stdc++.h>
using namespace std;
int a[3000001];
int main()
{
int n,k,max=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
int x;
cin>>x;
a[x]++;
if(max<x) max=x;
}
int s=0;
for(int i=1;i<max;i++){
if(a[i]!=0 && a[i+1]!=0)
s++;
else s=0;
if(s==k){
cout<<"Yes"<<endl;
return 0;
}
}
cout<<"No"<<endl;
return 0;
}
但是会 RE。 因为桶排序不适合数据分布不均情况 。
所以我们可以手动模拟大小排序并去重。(蒟蒻只会模拟)~勿喷~。
AC代码:
CPP#include<bits/stdc++.h>
using namespace std;
int a[90000001];
int b[90000001];
int main()
{
int n,k,max=0,j=1,N=0,s=1;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>b[i];
sort(b+1,b+1+n);
for(int i=1;i<=n;i++)
if(max<b[i]){
a[j]=b[i];
max=b[i];
j++;
}
for(int i=1;i<=n;i++)
if(a[i]!=0) N++;
if(N<k) {
cout<< "No"<< endl;
return 0;
}
for(int i=1;i<=N;i++){
if(a[i]!=0 && a[i+1]!=0 && a[i+1]-a[i]==1)
s++;
else s=1;
if(s>=k){
cout<<"Yes"<<endl;
return 0;
}
}
cout<<"No"<<endl;
return 0;
}
注意: 要等于 。
(喜欢的话就点个赞,关个注吧)
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...