xtu oj 彩球
样例输入#
3
7 5 3
1 2 3 1 2 3 1
6 4 3
1 2 2 3 1 3
6 2 2
1 2 3 4 5 5
样例输出#
Yes
Yes
No
滑动窗口问题
AC代码
#include<stdio.h>
#define N 10005
int main(){int T;scanf("%d",&T);while(T--){int n,m,k,i,flag=1;//m个k种颜色 scanf("%d%d%d",&n,&m,&k);int a[N]={};//数组 出现的次数 int b[N]={};//标记数组 出现为1 int c[N]={};for(i=0;i<n;i++){scanf("%d",&a[i]);}int cnt=0,len=0; for(i=0;i<n;i++){len++;b[a[i]]++;if(b[a[i]]>0&&c[a[i]]==0){c[a[i]]=1;cnt++;}if(len>m){len--;b[a[i-m]]--;if(b[a[i-m]]==0){cnt--;//出现次数为0 标记数组为0 c[a[i-m]]=0;}}if(len==m&&cnt!=k){flag=0;break;} }if(flag)printf("Yes\n");else printf("No\n");}
}