2017-Sp311-team2
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
== 流水账 ==
=== chenjb ===
=== oipotato ===
=== subconscious ===
== 题解 ==
* A:sort后按题意模拟。
* B:优先填数量多的颜色,用抽屉原理剪枝暴搜。
* C:2倍,列出同余方程。
* D:倒过来考虑,f[i][j]代表i和j都活着,其余都死了的最少代价。
* E:预处理出所有L,可以在每个交点统计非法L对的数量。
* F:枚举三个二进制位,O(8*50)dp。
* G:把边表排序,对于每个点之后产生的状态是确定的,只会在偏移量上有差别,gen出1e8个答案后O(1)回答询问。
* upd by yzc:考虑DP计算每个点向后的方案数,根据DP值进行DAG剖分。每个点将DP值最大的后继标记为重后继,并且倍增出每个点连续走2^j^个重后继之后在哪里,还有比这个走法字典序小的方案数。寻找答案时,先不断的跳重后继,直到不能跳时,二分求出跳哪个轻后继。由于轻后继的方案数最多只有当前点的一半,所以最多只有logk次不断的跳重后继直到不能跳的操作和logk次跳轻后继的操作。复杂度(n+m)logn+qlogklogn。由于DP值可能很大,可以和maxk+delta取min。
* H:折半后fwt合并。
* I:K圆并板子题。
* J:
* K:答案就是有几个数字的后面存在比自己小的数,set维护即可。
流水账
chenjb
oipotato
subconscious
题解
- A:sort后按题意模拟。
- B:优先填数量多的颜色,用抽屉原理剪枝暴搜。
- C:2倍,列出同余方程。
- D:倒过来考虑,f[i][j]代表i和j都活着,其余都死了的最少代价。
- E:预处理出所有L,可以在每个交点统计非法L对的数量。
- F:枚举三个二进制位,O(8*50)dp。
- G:把边表排序,对于每个点之后产生的状态是确定的,只会在偏移量上有差别,gen出1e8个答案后O(1)回答询问。
- upd by yzc:考虑DP计算每个点向后的方案数,根据DP值进行DAG剖分。每个点将DP值最大的后继标记为重后继,并且倍增出每个点连续走2j个重后继之后在哪里,还有比这个走法字典序小的方案数。寻找答案时,先不断的跳重后继,直到不能跳时,二分求出跳哪个轻后继。由于轻后继的方案数最多只有当前点的一半,所以最多只有logk次不断的跳重后继直到不能跳的操作和logk次跳轻后继的操作。复杂度(n+m)logn+qlogklogn。由于DP值可能很大,可以和maxk+delta取min。
- H:折半后fwt合并。
- I:K圆并板子题。
- J:
- K:答案就是有几个数字的后面存在比自己小的数,set维护即可。