题意: 看了快一天了,还是不太懂意思,转一篇学长的点击打开链接,
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<string> #include<iostream> #define MAXN 101100 using namespace std; int f[MAXN],s[MAXN],a[MAXN]; int n,m; int sum; int main() { int t,i,j,k,r,w,ans; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); for(i=1;i<=m;i++) { scanf("%d",&a[i]); } memset(f,0,sizeof(f)); memset(s,0,sizeof(s)); sum=0; for(i=1;i<=n;i++) { if(i<=m&&s[a[i]]++==0) { sum++; } if(sum!=min(i,m)) { f[i]=1; } } for(i=1;i<=m;i++) { if(--s[a[i]]==0) { sum--; } if(i+n<=m&&s[a[i+n]]++==0) { sum++; } if(sum!=min(n,m-i)) { f[(i-1)%n+1]=1; } } int ans=0; for(i=1;i<=n;i++) { if(!f[i]) { ans++; } } printf("%d\n",ans); } return 0; }