分治
文章平均质量分 56
&*^*&
这个作者很懒,什么都没留下…
展开
-
acm-(cdq分治、单调栈、好题)#2880. 「JOISC 2014 Day3」稻草人
原oj传送门vj传送门本题不太好讲述做法,大致上就是cdq分治的时候统计左半部分对右半部分产生的贡献,其中左半部分的点为左下角顶点,右半部分的点为右上角顶点。最开始的时候按照x坐标由小到大排序,cdq分治的过程中左右两半部分都分别按照从大到小的顺序排列,然后对左右两半部分分别维护一个单调栈,左半部分维护一个横坐标递减纵坐标递减的单调栈,右半部分维护一个横坐标递增纵坐标递减的单调栈。为什么要这样维护呢?先说说左半部分,如果当前点的横坐标大于栈顶的点,那么栈内的所有元素都不可能影响当前点对右半部分的点产.原创 2021-01-21 20:47:24 · 156 阅读 · 0 评论 -
acm-(根号分治、序列)Codeforces Round #683 (Div. 2) F2. Frequency Problem (Hard Version)
传送门首先可以证明最终答案的子串中一定有一个元素是在整个串中出现次数最多的。为什么正确呢?我们考虑最终的答案子串的形成过程,我们可以最初取整个串作为子串,不过它可能不符合题目要求,即存在至少两个最大出现次数的元素,假设出现次数最多的元素是D,那么我们从整个串的头或尾部删除元素D,直到满足条件即可。然后容易发现当删除的是一个D,那么只有两种情况发生,如果D和其它某些元素变得相等了,那么此时就不用继续往下删了;如果D仍然大于其它元素,那么可以继续往下删。当删除的不是一个D,那么只可能是其它元素变得更小,所以.原创 2020-11-18 09:20:28 · 328 阅读 · 0 评论 -
acm-(贪心、异或、分治、思维)Codeforces Round #673 (Div. 2)E. XOR Inverse
传送门本题让求一个x,使得当数组a中的所有元素与它异或后形成的新数组b中的逆序对最少。异或惯用套路是按位考虑,这里我们从高位开始考虑。当前位的所有元素无非只有0或1两种状态,异或1的话相当于01互换,也就是发生反转,考虑这样异或对数字有何影响,注意该位同为0的数字无论是否反转都不能改变它们的相对大小,该位同为1的数字也不能改变它们的相对大小。这个性质是解题的关键。由于不太好描述,用图来举例。比如现在有5个数字a[0],a[1],a[2],a[3],a[4]\mathbf{a[0],a[1],a[2].原创 2020-09-30 15:09:50 · 342 阅读 · 0 评论