P13733 [JOIGST 2025] 扑克 / Poker
题目传送门
题目大意:有
把
RE代码:
#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代码:
#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;
}
注意:s 要等于 1 。
(喜欢的话就点个赞,关个注吧)