UVa #1608 Non-boring sequences (例题8-16)
来源:互联网 发布:网络爱情歌曲大全 编辑:程序博客网 时间:2024/05/29 19:56
一个序列中只要有一个不重复的元素即可,所以找到一个不重复的元素后,只需分别递归判断这个元素左侧和右侧的子序列是不是符合要求即可。
寻找不重复元素的技巧上,可以参照UVa #11572 Unique Snowflakes (例题8-7),给每个元素做一个“上/下一次出现的位置”,判断其是否在当前所考虑的区间内。
在搜索不重复元素的时,采用两面夹击的方法,可以降低最坏情况下的复杂度到 O(nlogn)。如果顺序扫描,复杂度最坏是 O(n^2),会TLE。
另外拆分区间的时候要小心边界。
其实看题目时第一反应是滑动窗口。滑动窗口大小范围是 [2,n],每个窗口大小要检查 n-i+1 个窗口位置。加起来大约是 n^2 的复杂度,也会TLE。不过不知道可不可以二分法把复杂度降到 O(nlogn)。
Run Time: 0.458s
#define UVa "LT8-16.1608.cpp"char fileIn[30] = UVa, fileOut[30] = UVa;#include<cstring>#include<cstdio>#include<map>using namespace std;//Global Variables. Reset upon Each Case!const int maxn = 200000 + 10;int T, n, seq[maxn];int last[maxn], next[maxn];map<int,int> tmp;/////int non_boring(int l, int r) { if(l >= r) return 1; for(int i = 0; i <= (r-l+1)/2; i ++) { if( (last[l+i] < l ) && (next[l+i] > r) ) return non_boring(l, l+i-1) && non_boring(l+i + 1, r); if( (last[r-i] < l ) && (next[r-i] > r) ) return non_boring(l, r-i-1) && non_boring(r-i + 1, r); } return 0;}int main() { scanf("%d", &T); for(int kase = 0; kase < T; kase ++) { scanf("%d", &n); for(int i = 0; i < n; i ++) { last[i] = -1; next[i] = n + 1; scanf("%d", &seq[i]); } tmp.clear(); for(int i = 0; i < n; i ++) { int u = seq[i]; if(tmp.count(u)) { last[i] = tmp[u]; next[tmp[u]] = i; } tmp[u] = i; } if(non_boring(0, n-1)) printf("non-boring\n"); else printf("boring\n"); } return 0;}
0 0
- UVa #1608 Non-boring sequences (例题8-16)
- UVa 1608 Non-boring sequences
- uva 1608 - Non-boring sequences
- UVA 1608 Non-boring sequences
- uva 1608 Non-boring sequences
- uva 1608 Non-boring sequences
- UVA 1608 Non-boring sequences
- UVA-1608 Non-boring sequences
- Uva 1608 Non-boring sequences
- Uva1608 Non-boring sequences 【分治+中途相遇】【例题8-16】
- Non-boring sequences UVA
- UVA 1608 Non-boring sequences 递归分治
- UVA 1608(p248)----Non-boring sequences
- UVa OJ 1608 - Non-boring sequences
- Uva-1608 Non-boring sequences(高效率算法)
- Uva 1608 Non-boring sequences(分治)
- [中等] Uva OJ 1608 Non-boring sequences
- 1608 Non-boring sequences
- osgearth加载本地离线影像瓦片地图
- chef 安装
- java.sql.SQLException: ORA-28040: No matching authentication protocol 问题
- oracle分区表彻底删除的办法
- 关于malloc()函数以及free()报heap buffer错误的问题
- UVa #1608 Non-boring sequences (例题8-16)
- Xutils使用方法,感觉这个框架挺好用的
- RedHat Linux 6安装RDAC
- 回顾 Java多态性实现机制
- android源码修改问题解答之二(多媒体)
- boot.img解包和打包
- VS2010 C++/CLR FFMpeg常见问题及解决方案汇总(将于2016.9进行完善)
- Android通过网页启动APP
- 解决Google/Firefox等浏览器兼容IE