CSU-ACM2017暑期训练3 J
来源:互联网 发布:神机妙算软件安装流程 编辑:程序博客网 时间:2024/05/16 15:30
大意是给一个数字串,若它的每一个子串都有一个在这个字串中只出现一次的元素,那么久是不boring 的。
此题巧妙的运用了分治,先预处理出每个数字前一个相同的和后一个相同的数字的位置,用map,map.clear()比memset快,很奇怪。
然后就为(l,r)区间进行判断,从2边开始往中间找,若x位置发现一个单独数字,则再找(l,x-1),(x+1,r);复杂度跟归并排序相似nlogn
今天发现惊天秘密,next再UVA上会编译错误,而devc++上可过编译,当年fytNOIP2015DAY1T2被 link数组坑掉,也是因为linux下编译错误!
#!include<cstdio>#include<cstring>#include<map>#define maxl 200001using namespace std;int n,t;int a[maxl],last[maxl],nxt[maxl];map <int,int> mp;//next会编译出错 bool jug(int l,int r){if(l>r)return true;for(int i=l,j=r;i<=j;i++,j--){if(last[i]<l && nxt[i]>r) return jug(l,i-1)&&jug(i+1,r);if(last[j]<l && nxt[j]>r) return jug(l,j-1)&&jug(j+1,r);}return false;}int main(){scanf("%d",&t);for(int i=1;i<=t;i++){scanf("%d",&n);for(int j=1;j<=n;j++)scanf("%d",&a[j]);mp.clear();for(int j=1;j<=n;j++)if(mp.count(a[j]))last[j]=mp[a[j]],mp[a[j]]=j;elselast[j]=0,mp[a[j]]=j;mp.clear();for(int j=n;j>=1;j--)if(mp.count(a[j]))nxt[j]=mp[a[j]],mp[a[j]]=j;elsenxt[j]=n+1,mp[a[j]]=j;if(jug(1,n))printf("non-boring\n");elseprintf("boring\n");}return 0;}
阅读全文
0 0
- CSU-ACM2017暑期训练3 J
- CSU-ACM2017暑期训练3-递推与递归 J
- CSU-ACM2017暑期训练3-递推与递归 J
- CSU-ACM2017暑期训练3-递推与递归 G
- CSU-ACM2017暑期训练3-递推与递归I
- CSU-ACM2017暑期训练3-递推与递归 H
- CSU-ACM2017暑期训练3-递推与递归 G
- CSU-ACM2017暑期训练3-递推与递归I
- CSU-ACM2017暑期训练4-dfs D
- CSU-ACM2017暑期训练4-dfs E
- CSU-ACM2017暑期训练4-dfs F
- CSU-ACM2017暑期训练4-dfs G
- CSU-ACM2017暑期训练5-三分 E
- CSU-ACM2017暑期训练6-bfs C
- CSU-ACM2017暑期训练6-bfs I
- CSU-ACM2017暑期训练6-bfs H
- CSU-ACM2017暑期训练6-bfs G
- CSU-ACM2017暑期训练5-三分 A
- PHP连接MongoDB操作
- java实训第二天7/27
- 关于基于git分支开发流程的一点看法
- LeetCode 349 Intersection of Two Arrays
- c#关闭窗体时发生的事件,关闭窗体怎样出现确认取消弹框
- CSU-ACM2017暑期训练3 J
- 二叉树已知先序中序求后序,已知后序中序求先序
- 基于UDP的网络群聊系统
- 深入浅出WPF之Binding的使用(二)
- 0727-java入门基本
- python解析json
- hpuoj【1343】超水计算zz题【水题】
- JS扫盲
- Oracle基础知识