某个序列找到唯一元素后,判断被分成的两边的序列即可
问题在于找到唯一元素
连续序列,重复元素的问题;感觉很有一般性 查找相同元素用map,last,next存上一个相同元素的位置
复杂度计算有点思考;
记录last,next,那么对于一个元素,判断是否独立O(1)
从头开始查找,最坏情况T(n)=T(n-1)+O(n)(O(n)是从头判断到尾) =O(n^2)
两边开始T(n)=2T(n/2)+O(n)=T(nlogn)

#include<cstdio>
#include<map>
using namespace std; const int maxn = + ;
int A[maxn], last[maxn], nextp[maxn];
map<int, int> cur; bool duli(int p, int L, int R) {
return last[p] < L && nextp[p] > R;
} bool check(int L, int R) {
if(L >= R) return true;
for(int d = ; L+d <= R-d; d++) {
if(duli(L+d, L, R)) //L+d位置上的元素 独立
return check(L, L+d-) && check(L+d+, R);
if(L+d == R-d) break;
if(duli(R-d, L, R))
return check(R-d+, R) && check(L, R-d-);
}
return false;
} int main() {
int T, n;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
cur.clear();
for(int i = ; i < n; i++) {
scanf("%d", &A[i]);
if(!cur.count(A[i]))
last[i] = -;
else
last[i] = cur[A[i]];
cur[A[i]] = i;
}
cur.clear();
for(int i = n-; i >= ; i--) {
if(!cur.count(A[i]))
nextp[i] = n;
else
nextp[i] = cur[A[i]];
cur[A[i]] = i;
} if(check(, n-))
printf("non-boring\n");
else
printf("boring\n");
}
return ;
}

uva1608 Non-boring sequences的更多相关文章

  1. UVa1608 UVaLive6258 Non-boring sequences

    填坑系列(p.248) 比较神 从两端枚举 最坏复杂度就成O(nlogn)了 #include<cstdio> #include<cstdlib> #include<al ...

  2. 8-16 不无聊序列 non-boring sequences uva1608

    题意: 如果一个序列的任意连续子序列中至少有一个只出现一次的元素  则称这个序列是 不无聊序列  输入一个n个元素的序列a   判断是不是不无聊序列 一开始想当然  以为只要 2位的子序列都满足即可 ...

  3. 题解 UVA1608 【不无聊的序列 Non-boring sequences】

    思路: 算法很显然: 一.在区间\([l,r]\)找到一个只出现一次的元素P(如果不存在,那么序列\(boring\)) 二.递归处理区间\([l,p-1]\)和区间\([p+1,r]\). 其关键在 ...

  4. 【BZOJ-4059】Non-boring sequences 线段树 + 扫描线 (正解暴力)

    4059: [Cerc2012]Non-boring sequences Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 440  Solved: 16 ...

  5. BZOJ 4059: [Cerc2012]Non-boring sequences ( )

    要快速在一段子序列中判断一个元素是否只出现一次 , 我们可以预处理出每个元素左边和右边最近的相同元素的位置 , 这样就可以 O( 1 ) 判断. 考虑一段序列 [ l , r ] , 假如我们找到了序 ...

  6. ●UVA 1608 Non-boring sequences

    题链: https://vjudge.net/problem/UVA-1608#author=chenchonghan题解: 分治 如果一个区间[l,r]里面在p位置出现了一个只出现一次的元素,(如果 ...

  7. UVA1608-Non-boring sequences(分治)

    Problem UVA1608-Non-boring sequences Accept: 227  Submit: 2541Time Limit: 3000 mSec Problem Descript ...

  8. poj 1776 Task Sequences

    http://poj.org/problem?id=1776 题意: 有一个机器要完成N个作业, 给你一个N*N的矩阵, M[i][j]=1,表示完成第i个作业后不用重启机器,继续去完成第j个作业 M ...

  9. 2015 Multi-University Training Contest 3 hdu 5324 Boring Class

    Boring Class Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

随机推荐

  1. zz MBR,EBR

    http://hi.baidu.com/net5x/item/12d5243d86416bd76d15e993

  2. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core

    支持的数据库:可以查看官方网站 https://docs.microsoft.com/en-us/ef/core/providers/ 安装了VS2017后会安装了LocalDB,验证localDB ...

  3. J20170507-ts

    プロンプト n. 提示 オブジェクト n. 对象 アスタリスク *  アンパサンド      & スラッシュ       / イテレータ    n 迭代器 差し詰め 当前 スペル spell ...

  4. poj1015【DP.......无奈了】

    首先,读题,真是一窍不通.后来看完程序的意思,才明白吧.. 题意: n个人中选m个,条件是取sum|D-P|最小,当有|D-P|相同的时候取|D+P|最大的.然后输出那些m个人的sumD,sumP,最 ...

  5. GitHub笔记---邮箱访问错误

    GitHub地址太长,所以需要一个变量来保存 把远程仓库赋值给一个变量,以后就用就这变量代表这个地址 GitHub推送push 推送过程中发生一个小插曲,出现了错误,错误提示我复制过来吧 remote ...

  6. Jquery | 基础 | 使用 jQuery 表单过滤选择器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 轻松搞定JSONP跨域请求【转】,文章非常好!

    http://blog.csdn.net/u014607184/article/details/52027879

  8. Jmeter安装说明

    本文主要介绍Jmeter工具的安装 一.安装JDK 1.下载jdk,到官网下载jdk,下载jkd1.8即可,地址:http://www.oracle.com/technetwork/java/java ...

  9. mysql学习之通过文件创建数据库以及添加数据

    转自:http://blog.163.com/wujicaiguai@126/blog/static/170171558201411311547655/ 1.# 创建数据库语句 create data ...

  10. 152 Maximum Product Subarray 乘积最大子序列

    找出一个序列中乘积最大的连续子序列(该序列至少包含一个数).例如, 给定序列 [2,3,-2,4],其中乘积最大的子序列为 [2,3] 其乘积为 6.详见:https://leetcode.com/p ...