UVA
来源:互联网 发布:全国地址数据库 编辑:程序博客网 时间:2024/06/05 23:06
妈耶,,,昨天的比赛题,直接看不懂题意撒
格老子滴英语都不如初中生,可我还要坚持下去,,,,不怂就干
题意,任意 子串,都包含一个只出现过一次的数字,
然后我们想到,给定的串至少有一个数字是出现过一次的,一个串,我们找到这个数字,包含这个数字的串都是满足题意的,然后我们递归下去,对他两边的字串再进行求解,,
递归的边界就是只包含一个数字的时候,下一步退出
ps:最近再看算法导论,感觉不错
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <set>#include <map>#include <stack>#include <queue>#include <ctype.h>#include <vector>#include <algorithm>#include <time.h>// cout << " === " << endl;using namespace std;typedef long long ll;const int maxn = 200000 + 7, INF = 0x3f3f3f3f, mod = 1e9+7;int T, n;int a[maxn], l[maxn], r[maxn];bool solve(int l_, int r_) { if(l_ >= r_) return true; //int mid = (l_ + r_) / 2; int ll = l_, rr = r_; while(ll <= rr) { if(l[ll] < l_ && r[ll] > r_) return ( solve(l_, ll-1) && solve(ll+1, r_) ); if(l[rr] < l_ && r[rr] > r_) return ( solve(l_, rr-1) && solve(rr+1, r_) ); ll++, rr--; } return false;}int main() { scanf("%d", &T); while(T--) { scanf("%d", &n); map<int, int> mp; for(int i = 0; i < n; ++i) { scanf("%d", &a[i]); if(mp.count(a[i])) { r[mp[a[i]]] = i; l[i] = mp[a[i]]; r[i] = INF; } else { l[i] = -1; r[i] = INF; } mp[a[i]] = i; } if(solve(0, n-1)) puts("non-boring"); else puts("boring"); } return 0;}
阅读全文
1 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- ThreadPoolExecutor
- opencv3学习之形态学(腐蚀/膨胀/开运算/闭运算/顶帽/黑帽)
- 抓包、python网络编程之tcp、udp例子
- log书写规范
- eclipse打开文件目录插件
- UVA
- Dubbo的学习
- 3.单标签,双标签,路径
- PHP常用函数积累
- Code Review&编程习惯&代码质量优化
- 2017-8-17ACM训练题
- mvn install时跳过Test
- 从 Antd 《深入React技术栈》里面总结不了解的
- 扫码绑定