您的位置:首页 > 其它

UVA 11536(p255)----Smallest Sub-Array

2016-02-27 13:41 309 查看
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int INF=1e7;
const int maxn=1e6+50;
int x[maxn];
int v[maxn];
queue<int> q;
int cas=0,n,m,k;
void prepare()
{
x[1]=1;
x[2]=2;
x[3]=3;
for(int i=4; i<=n; i++)
x[i]=(x[i-1]+x[i-2]+x[i-3])%m+1;
}
void solve()
{
int ans=INF,cnt=0;
for(int i=1; i<=n; i++)
if(x[i]>=1&&x[i]<=k)
{
q.push(i);
if(!v[x[i]]) cnt++;
v[x[i]]++;
while(cnt==k)
{
int tmp=q.front();
int l=i-tmp+1;
ans=min(ans,l);
v[x[tmp]]--;
if(v[x[tmp]]==0)
cnt--;
q.pop();
}
}
if(ans!=INF)
printf("Case %d: %d\n",++cas,ans);
else printf("Case %d: sequence nai\n",++cas);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&k);
prepare();
while(!q.empty()) q.pop();
memset(v,0,sizeof(v));
solve();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: