cqm解题报告F

http://acm.cqu.edu.cn/oj/problem_show.php?pid=21464

本题不是很难,仔细观察就可以得知x+n-i是恒定的(x是每个人的金钱,n是队列的长度,i是在当前位置。如果那么很显然的一点是如果出现相同的xi+n-i,那么一定是无限交换队列。
下面附上AC代码。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<cstring>
#include<cstring>
using namespace std;
const int maxn=2e6+10;
bool vis[maxn];
int main()
{
    int t;
    scanf("%d",&t);
    int ca=1;
    while(t--)
    {
        int n;
        scanf("%d",&n);
        bool flag=false;
        memset(vis,false,sizeof(vis));
        for(int i=0;i<n;i++)
        {
            int a;
            scanf("%d",&a);
            int b=a+n-i;
            if(vis[b]) flag=true;//如果出现相同的
            vis[b]=true;
        }
        if(flag)
        {
            printf("Case %d: No\n",ca++);
        }else{
            printf("Case %d: Yes\n",ca++);
        }
    }
}

你可能感兴趣的:(水题)