[cf787E]Till I Collapse】的更多相关文章

考虑对询问分块,对于i<K的询问,暴力处理,时间复杂度为o(Kn):对于i>K的询问,发现答案都小于n/K且满足单调性,那么可以二分出每一段相同的答案,时间复杂度为$o(n^{2}log_{2}n/K)$,取K=1000可以通过. 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 100005 4 #define K 1000 5 int n,ans,c[N],sum[N]; 6 int calc(int k)…
题目链接:http://codeforces.com/contest/786/problem/C 大力膜了一发杜教的代码感觉十分的兹瓷啊! 我们知道如果$k$是给定的我们显然是可以直接一遍$O(n)$的贪心扫过去的,那么问题很显然的变成了支持一个数据结构,维护一段区间内不同数字的个数(事实上是固定左端点求最远的右端点使得这段区间内不同数字的个数小于等于$k$).嗯,很可以,如果写过HH的项链的话你就有可能..... HH的项链是有莫队做法和离线询问预处理$next$数组并用树状数组维护两种做法的…
题意: 给出一个长度为n的序列,每个数值在1-n之间且为整数,现在要把这个序列划分为若干段,使得每一段的颜色种数不超过k,求最少的区间数目.对于从1到n的n种k的取值,分别输出这时的最少区间数目. 分析: 首先这个题很像HH的项链,而HH的项链的在线做法需要写可持久化线段树,我们自然想到这个题也需要可持久化线段树 考虑对于每个k分别求解.暴力的贪心做法是这样:从左端开始,每次找出一段尽量长的颜色种数不超过k的区间划分出来.如果颜色种数要求不超过k,那么划分的区间段数最多为n/k上取整.(k个元素…
[题目链接] http://codeforces.com/contest/786/problem/C [题目大意] 给出一个数列,问对于不同的k,将区间划分为几个, 每个区间出现不同元素个数不超过k时最少的区间划分数量. [题解] 我们可以用树状数组+扫描线求出一个区间不同元素的数量, 我们记录每一个位置上下一个相同相同元素的位置,当扫描线扫过当前点时 我们消除这个点的影响,并在其下个出现的位置进行更新, 这样就能求出固定左端点不同右端点情况下不同区间内不同元素的数量, 这个题我们可以用倍增找出…
题目大意: 给定一个长度为\(n\)的序列,要求将其划分为最少的若干段使得每段中不同的数字的种数不超过\(k\). 对于 \(k = 1 .. n\)输出所有的答案. \(n \leq 10^5\) 题解: 考虑最坏情况下会分成多少段. 最坏分成\(\frac{n}{k}\)段. 所以对于每种\(k\)将其段数加起来. 有\(O(\sum_{k=1}^n\frac{n}{k})= O(n\log n)\) 所以我们可以考虑每次找出下一个端点进行转移. 复杂度为\(O(\text{转移}nlogn…
题意:对于一个序列,假如说一个区间内最多能包含 $k$ 个不同的数,那么这个序列最少会被划分成几个区间 $?$ 输出 $k$ 为 $1\sim n$ 的答案. 我们每次选区间一定是贪心地将这个区间选地越大越好. 这道题有一个非常显然的主席树做法:从后向前扫,维护每一种数字出现最靠左位置,然后用主席树维护这些关键位置. 假设当前跳到点 $k$,那么如果要查 $k$ 能跳到的下一个点的话在线段树上二分即可. 由于 $k$ 是由 $1\sim n$ ,所以整个暴力跳的复杂度大概是 $O(10\time…
大意: 给定序列, 将序列划分为若干段, 使得每段不同数字不超过k, 分别求出k=1...n时的答案. 考虑贪心, 对于某个k 从1开始, 每次查询最后一个颜色数<=k的点作为一个划分, 直到全部划分完毕 由于每个划分大小至少为k, 故最多需要查询$\frac{n}{k}$次, 所以总共需要查询$O(nlogn)$次. 查询操作考虑用主席树实现. 对序列中每个点维护一棵线段树, 对于位置$x$的线段树, $[x,n]$的每个位置存它到点$x$的种类数, 非叶结点存儿子的最小值用来二分. 从大到小…
题目分析 首先,对于这道题,可以用贪心以一个\(O(n)\)的复杂度求解一个\(k\)的值 暴力是\(O(n^2)\)的复杂度,当然过不了. 我们手推一下样例,会发现,答案满足单调性,于是,果断想到二分. 再推一推性质,会发现,实际上,一个答案最多会出现\(\sqrt n\)次,于是,可以对答案分块,用二分枚举右边界,时间复杂度\(O(n\sqrt nlog(n))\),还是过不了. 但因为每一次一个答案最多会出现\(\sqrt n\)次,这就是块的最大长度. 于是,对于\(k\le\sqrt…
如果你是音乐爱好者: 这些歌, 请戴上耳机, 调大音量, 一个人听 ,全世界 都是你的!!!!! (一)这些歌很温暖,没有金属味,适合有阳光的午后,很悠闲... [Anaesthesia]Maximilian Hecker强烈推荐     [Summer Days In Bloom]Maximilian Hecker力推! [end of May]Keren Ann [gotta have you]The Weepies调调很特别,我用它做过背景音乐. [i remember]郭采洁 我喜欢睡觉…
B题打错调了半天,C题想出来来不及打,还好没有挂题 AC:AB Rank:96 Rating:2125+66->2191 A.Berzerk 题目大意:有一个东东在长度为n的环上(环上点编号0~n-1),两个玩家,玩家1有a种操作可选,玩家2有b种操作可选,每种操作可以让这个东东向前走若干步,两个玩家轮流操作,谁先让东东走到0谁胜,求出双方都选最优操作的情况下,东东开始在1~n-1各位置时玩家1先手和玩家2先手会必胜,必败还是无限循环.(a,b<n<=7000) 思路:类似DFS或者BF…