UVALive - 6258
2017-10-14 21:50
295 查看
/************************************************************************* > Author: MentalOmega > Mail: 965194745@qq.com > Created Time: 2017年10月14日 > function:题目意思是给你一串字符串,如果这个字符串的任意连续字串中都存在一个数是独一无二的就输出不无聊 由于是要要求是任意连续字串。先考虑最长的那个字串,先找到一个能够满足他的。 比如字串12321,3能照顾到整个字串,那么只要包含3的字串都是合法的,不包含3的就是剩下12和21,相当于被3劈成两半 这两半就是一个子问题了 ************************************************************************/ #include<bits/stdc++.h> using namespace std; const int MAXN = 2e6+10; int n; struct Node { int v; int prev,nextv;//离他最近值相同的坐标 }node[MAXN]; bool dfs(int left,int right) { for(int l=left,r=right;r>=l;l++,r--)//左右同时找,防止独一无二的数聚集在一侧那么会退化成n方 { if(node[l].prev<left&&node[l].nextv>right) return dfs(left,l-1)&&dfs(l+1,right); if(node[r].prev<left&&node[r].nextv>right) return dfs(left,r-1)&&dfs(r+1,right); } return left>=right; } int main() { if (fopen("in.txt", "r") != NULL) { freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); } int t; cin>>t; while(t--) { map<int,int> mp; cin>>n; int cnt=0; for(int i=1;i<=n;i++) { int v; cin>>v; if(mp.count(v)==0) mp[v]=cnt++; v=mp[v]; node[i]={v,0,n+1}; } int vis[cnt]={0}; for(int i=1;i<=n;i++) { node[i].prev=vis[node[i].v]; vis[node[i].v]=i; } fill(vis,vis+cnt,n+1); for(int i=n;i>=1;i--) { node[i].nextv=vis[node[i].v]; vis[node[i].v]=i; } cout<<(dfs(1,n)?"non-boring":"boring")<<'\n'; } return 0; }
相关文章推荐
- UVALive 6258 Non-boring sequences 分治
- UVa1608 UVaLive6258 Non-boring sequences
- UVALive 6258 Non-boring sequences
- Uva live 4043 Ants( KM+简单的计算几何)
- UVALive 3610 Log Jumping
- UVa12171 hdu2771 UVaLive4291 Sculpture
- 【01背包】Uvalive4015 Caves && Uvalive3637 The Bookcase
- 【暑假】[实用数据结构]UVAlive 3644 X-Plosives
- UVALive - 4513 Stammering Aliens
- UVALive 3211 Now or later
- UVALive 6170 (LA 6170) Esspe-Peasee 扩展欧几里得
- UVALive 3027 Corporative Network
- UVALive 3211 - Now or later(2-SAT + 二分)
- UVaLive 6694 Toy Boxes (二分+想法)
- Parenthesis UVALive - 4882 删除不必要的括号序列,模拟题 + 数据
- uvalive 6800 - The Mountain of Gold? 判负环
- UVALive 6324 Archery
- UVALive - 7270 Osu! Master
- UVALive 3679 Pitcher Rotation(DP)
- UVALive 4627 -- Islands (并查集)