某个序列找到唯一元素后,判断被分成的两边的序列即可
问题在于找到唯一元素
连续序列,重复元素的问题;感觉很有一般性 查找相同元素用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. nginx下laravel框架rewrite的设置

    nginx下laravel框架rewrite的设置 百牛信息技术bainiu.ltd整理发布于博客园 在nginx的vhost站点配置文件中加入以下内容即可 1 2 3 4 5 6 7 8 9 10 ...

  2. 【转】implements百科

    implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法.实现一个接口,必须实现接口中的所有方法.   中文名 实现 外文名 implements 意    思 类实现一 ...

  3. appium九宫格解锁错误提示:The coordinates provided to an interactions operation are invalid解决办法

    原文地址:http://blog.csdn.net/qqtMJK/article/details/77838814 今天做自动化解锁9宫格,发现swipe不能满足需求,于是用TouchAction去实 ...

  4. Docker 概念及基本用法

    Docker 概念及基本用法 一. 本节内容简介 本实验中我们初步接触Docker的概念和基本用法.需要依次完成下面几项任务: 理解Docker是什么 学习如何在Linux上安装Docker 学习如何 ...

  5. 【202】ThinkPad手势&快捷键

    快捷键: Ctrl + Alt + ↑:正常屏幕Ctrl + Alt + ↓:翻转屏幕Ctrl + Alt + →:向左侧翻转90°Ctrl + Alt + ←:向右侧翻转90° 首先看下 Esc 键 ...

  6. 使用AES128加密字符串

    import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.c ...

  7. html中target的用法

  8. sql 日历

    /* Formatted on 2013/9/7 20:45:28 (QP5 v5.185.11230.41888) */ SELECT MIN (DECODE (TO_CHAR (DAYS, 'D' ...

  9. DFS系列 POJ(自认为的讲解)

    C - Sum It Up POJ1564 题意: 给你一个N,然后给你一堆数The numbers in each list appear in nonincreasing order, and t ...

  10. python __builtins__ slice类 (62)

    62.'slice', 对序列化类型数据切片,返回一个新的对象. class slice(object) | slice(stop) | slice(start, stop[, step]) | | ...