CERC2012 D - Non-boring sequences 暴力

              题目: 

                     Click here

              题意:

                     一个数列是non-boring只有其所有长度>1的子串中至少有一个数字仅出现了一次...长度可能会到2*10^5..现在给出若干的序列..请判断是否为non-boring序列...

              题解:

                     可以用O(nlogn)预处理..得到串中每一位数可以覆盖到的最左与最右(仅出现一次)...然后就是利用dfs..一层一层的判断了...

                     无语的是我在枚举终点的时候是从s~e..超时到吐..但标称用一种奇怪的顺序来枚举..居然2s不到就过了..Orz...


Program:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define oo 1<<29
#define MAXN 200005
#define pi acos(-1.0)
#define esp 1e-30
using namespace std;     
struct node
{
       int w,id;
}A[MAXN];
int L[MAXN],R[MAXN];
bool F[MAXN];
bool judge(int s, int e) 
{
       int i,mid;
       if (s==e) return false;
       for (i=0;i<(e-s);i++) 
       {
             if (i%2) mid=s+i/2;
                else  mid=e-1-i/2; 
             if (L[mid]e)
                 return judge(s,mid) || judge(mid+1,e);
       }
       return true;
}
bool cmp(node a,node b)
{
       if (a.w!=b.w) return a.w


你可能感兴趣的:(思维)