摘要:
题面 "Bzoj" "洛谷" 题解 考虑对操作离线后分块处理询问操作(莫队算法),将询问操作按照编号分块后左端点第一关键字,右端点第二关键字排序(分块大小为$n^{\frac 23}$),对于每一个询问操作,记下当前最后一个修改操作。 之后就是莫队的板子了。 cpp include include 阅读全文
摘要:
题面 "Poj" 题解 下面内容引用自"李煜东 《算法竞赛进阶指南》"(对原文略有缩减,侵删): 因为矩形的大小固定,所以矩形可以由它的任意一个顶点唯一确定。我们可以考虑把 矩形的右上角顶点放在什么位置 ,圈住的星星亮度总和最大。 所以,对于一颗星星,能够覆盖住这颗星星的右上角的位置在区间$[x,y 阅读全文
摘要:
题面 "Poj" 题解 不难发现最后一位就是$pre[n]+1$,然后消除这个位置对其他位置的贡献,从左到右扫一遍,必定有至少一个位置可以得出,循环这个过程,$O(n^2)$出解。 cpp include include include include using std::min; using s 阅读全文
摘要:
题面 "Poj" 题解 区间求和$+$区间修改板子,这里用分块写的 cpp include include include include using std::min; using std::max; using std::swap; using std::sort; typedef long l 阅读全文
摘要:
题面 "Poj" 题解 这里采用并查集的补集。 $x$表示同类集合,$x+n$表示敌人集合,$x+n\times2$表示敌人的敌人集合。 如果当前给出的是一对同类关系,就判断$x$是否吃$y$或者$y$是否吃$x$(冲突)。 如果是真话,就将所有关系连在一起。 反之,如果给出的是一对$x$吃$y$关 阅读全文
摘要:
题面 "Poj" 题解 反正只要你判断是否满足区间的奇偶性,假设每一位要么是$1$要么是$0$好了。 假设有$S$的前缀和为$sum[]$,则有: 若$S[l...r]$中有奇数个$1$,则$sum[l 1]$与$sum[r]$不同奇偶;反之,则同奇偶 用一个带权并查集维护,设权值数组$s[i]$表 阅读全文
摘要:
题面 "Bzoj" "洛谷" 题解 考虑离线做法,逆序处理,一个一个星球的加入。用并查集维护一下连通性就好了。 具体来说,先将被消灭的星球储存下来,先将没有被消灭的星球用并查集并在一起,这样做可以路径压缩,然后再将被消灭的星球倒着一个一个加入,然后在$union$的时候,如果两个元素不在同一个集合中 阅读全文