bzoj4059】的更多相关文章

https://konnyakuxzy.github.io/BZPRO/JudgeOnline/4059.html https://cn.vjudge.net/problem/Gym-100624D 根本不会... 似乎有很高妙的分治做法啊!https://www.cnblogs.com/forever97/p/bzoj4059.html 就是说,如果当前区间为[l,r],存在一个i满足pre[i]<l&&nxt[i]>r,那么任意一个[l,r]的子区间,只要包含i点就不无聊,…
题目: BZOJ4059 分析: 想了半天没什么想法,百度到一个神仙做法-- 设原数列为 \(a\),对于每一个 \(i\) 求出前一个和后一个和 \(a_i\) 相等的位置 \(pre[i]\) 和 \(nxt[i]\) (如果不存在则分别为 \(-1\) 和 \(n+1\) ).那么如果在一个区间 \([l, r]\) 中存在一个 \(i\) 满足 \(pre[i]<l\) 且 \(nxt[i]>r\) ,说明 \(i\) 在 \([l, r]\) 中只出现了一次,那么任意一个跨越 \(i…
4059: [Cerc2012]Non-boring sequences Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 440  Solved: 160[Submit][Status][Discuss] Description 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短.一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次.给定一个整数序列,请你判断它是不是不无聊的. In…
题解: 还是一道不错的题目 首先它要求每个区间都满足要求,所以我们很容易想到将它映射到二维平面上 然后我们算出每个数的前驱以及后继li,ri 那么第一维是li-i,第二维是i-ri的区间就是合法的,同理交换 这样就变成了矩形覆盖问题 然后因为是不能遍历所有点的所以二维差分是不行的 2种方法 1.线段树+扫描线,将矩形两条边变为一条插入一条删除 nlogn 2.二维线段树 nlog^2n 另外正解其实也是很好想的 我们注意到如果有一个元素在整个序列中只出现了一次,序列就被分割为两个了 所以我们只要…
Solution 记序列为\(a\),计算出与\(a_i\)相等的前一个元素的位置\(pre_i\),以及后一个元素的位置\(nex_i\),显然,对于那些左端点处于\((pre_i,i]\)以及右端点处于\([i,nex_i)\)的区间都可以认为是合法的. 那么我们可以将每个区间\([l,r]\)抽象成一个二维平面的点\((l,r)\),每一个元素可以使得一部分区间合法,可以抽象为一个横坐标范围为\([pre_i+1,i]\)且纵坐标范围为\([i,nex_i-1]\)的矩形.对所有矩形进行求…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4059 [题解] 考虑分治.定义过程solve(l,r)为判断全在[l,r]范围内的所有连续子序列是不是non-boring的 那么我们预处理每个地方的前一个与它相同的数pre[i]和后一个与它相同的数nxt[i]. 显然对于i属于[l,r],如果存在pre[i]<l,nxt[i]>r,那么任何经过i的连续子序列都合法,所以就分成[l,i-1]和[i+1,r]检测即可. 为了保证复杂度,我…
题目描述 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短.一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次.给定一个整数序列,请你判断它是不是不无聊的. 输入 第一行一个正整数T,表示有T组数据.每组数据第一行一个正整数n,表示序列的长度,1 <= n <= 200000.接下来一行n个不超过10^9的非负整数,表示这个序列. 输出 对于每组数据输出一行,输出"non-boring"表示这个序列不无聊…
这个做法名字是从武爷爷那里看到的…… Description 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短.一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次.给定一个整数序列,请你判断它是不是不无聊的. Input 第一行一个正整数T,表示有T组数据.每组数据第一行一个正整数n,表示序列的长度,1 <= n <= 200000.接下来一行n个不超过10^9的非负整数,表示这个序列. Output 对于每组数据输出一行,…
这题正解应该是扫描线,就是发现DP的区间在两个维度都为连续段,于是可以直接扫描线.但不幸的是,扫描线常数过大,无法通过本题. 考虑分治.对于分治区间[l,r],可以记录pre和nxt表示其前/后一次出现的位置,每当遇到一个出现次数=1的数,可以直接把区间分为两半判断,反之则丢掉这个数,而仅会分治一次,且掐断地方是先判两边,复杂度近似O(nlogn). 实在太坑了,其实是一道练习扫描线的好题qwq #include<cstdio> #include<algorithm> #defin…
和bzoj4059: [Cerc2012]Non-boring sequences非常相似 Description 一棵Factor-Free Tree是指一棵有根二叉树,每个点包含一个正整数权值,且每个点的权值都与其所有祖先的权值互质. 二叉树中序遍历是指按照左子树-根-右子树的顺序递归遍历二叉树,将每个点的权值依次写下来得到的序列. 给定一个序列a_1,a_2,...,a_n,请判断它是不是可能是某棵Factor-Free Tree的中序遍历序列,如果是的话请给出例子. Input 第一行包…