treap
_beginend
这个作者很懒,什么都没留下…
展开
-
bzoj 3544: [ONTAK2010]Creative Accounting treap
题意给出n个数,求一个区间[l,r],使得(a[l]+a[l+1]+…+a[r]) mod m 最大。 n<=200000,m<=1018n<=200000,m<=10^{18}分析考虑前缀和sum,若[l,r]为最优解,必然(sum[r]-sum[l-1]) mod m 最大,那么必然有sum[l-1]>sum[r]且sum[l-1]最小。 用平衡树动态维护后继即可。 网上貌似都是敲set,原创 2016-12-13 21:53:50 · 516 阅读 · 0 评论 -
bzoj 1112: [POI2008]砖块Klo treap
题意给出n个数,每次操作可以让一个数+1或-1,求连续的m个数,使得他们变成相同的数的操作数最少。 n,m<=100000分析假设现在给出m个数,要想使得他们变成相同的数的操作数最少,显然要让他们都变成这个m个数的中位数。 知道了这个后我们就可以用一棵treap来暴力这个m个值,然后每次查找中位数即可。第一次用c++写treap,感觉好虚啊,顺便去借鉴了一波黄学长的删除操作。话说黄学长的代码真心原创 2016-12-07 19:08:23 · 369 阅读 · 0 评论 -
bzoj 2658: [Zjoi2012]小蓝的好友(mrx) treap+扫描线
题意给出一个r*c的方格,其中有n个点被随机标记。求有多少个子矩阵满足其中至少有一个点被标记。 R,C<=40000,N<=100000,资源点的位置两两不同,且位置为随机生成。分析一道神题。 我们可以用总的子矩阵数量减去不包含任何资源点的子矩阵数量。那么我们现在就要求不包含任何资源点的子矩阵数量。 我一开始也想到了扫描线,但没想到用什么来维护答案。看了题解发现可以用treap。 我们可以一原创 2017-07-15 22:05:11 · 357 阅读 · 0 评论 -
bzoj 3682: Phorni 后缀平衡树+线段树
题意Phorni 是一个音之妖精,喜欢在你的打字机上跳舞。 一天,阳光映射到刚刚淋浴过小雨的城市上时,Phorni 用魔法分裂出了许多个幻影,从 1 到 n 编号。 她的每一个幻影都站在打出的字符串的一个位置上,多个幻影可以站在同一个位置上。 每一个幻影代表的字符串即为从它站立位置开始的后缀,注意站立位置是从右往左数的。 让我们形式化地描述一下,若第 i 个幻影站在 Pi 上,那么它所代表的原创 2017-12-02 10:53:37 · 439 阅读 · 0 评论