现在的位置: 首页 > 综合 > 正文

uva – 10730 – Antiarithmetic?(暴力枚举)

2018年03月17日 ⁄ 综合 ⁄ 共 600字 ⁄ 字号 评论关闭

本题直接暴力枚举所有非法三元组判断即可;

但当10000 的时候非法三元组个数为 24599000;目前估计同时满足这么多条件的n长串很少,导致程序秒过;或者说句很水;

#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#include<cstring>
#include <cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;

const int maxn = 10100;
int a[maxn],n;
int main()
{
    while(scanf("%d",&n)==1&&n){
         scanf(":");
         for(int i=1;i<=n;i++){
            int x;
            scanf("%d",&x);
            x++;
            a[x] = i;
         }
         bool flag=true;
         for(int i=1;i<=n;i++){
             for(int j=1;i+2*j<=n;j++){
                if( (a[i] < a[j+i] && a[j+i] < a[j+j+i])
                   ||(a[i] > a[j+i] && a[j+i] > a[j+j+i]) )
                {flag=false;
                break;}
             }
             if(!flag) break;
         }
         if(flag) printf("yes\n");
         else printf("no\n");
    }
    return 0;
}

抱歉!评论已关闭.