摘要: 其实就是怕忘了……这里发一下线性求逆元以及阶乘的逆元的板子。 线性求逆元 逆元是啥我就不说了,但是线性递推式怎么来的我还是可以证明一下的。 求 i 的逆元,假设[1, i - 1]的逆元已知。 设 p = k * i + b,则 b = p % i, k = ⌊p / i⌋ 。 则k * i + b 阅读全文
posted @ 2018-10-22 23:10 mrclr 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 刚开始我以为是kmp+dp,后来发现其实没那么复杂。 令dp[i][j][h][0/1]表示A串到第 i 位,B串到第 j 位,其中A串取了k个子串时,Ai 取/不取的方案数。那么转移方程就很容易的写出来了: dp[i][j][h][0] = dp[i - 1][j][h][0] + dp[ 阅读全文
posted @ 2018-10-22 22:31 mrclr 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这题刚开始是什么思路也没有,关键是不知道怎么解决序列反转的问题。 然后我就想到如果暴力反转一个序列的话,实际上就是不断交换数组中的两个数ai和aj,同时要满足交换的数不能交叉。 然后又看了一眼(岂止一眼)题解,因为ai <= 50,所以令dp[i][j][L][R]表示区间[i, j],mi 阅读全文
posted @ 2018-10-22 19:51 mrclr 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 看到绝对值最小这种逼近的问题,应该能想到二分。 容易发现,随着W的变大,符合条件的矿石越来越少,即满足单调关系。因此我们二分W,然后在W确定时求出x = ΣYi,如果x >= S,说明W取小了,向右二分;否则向左二分。每一次都更新答案。 求x用前缀和就解决了。 时间复杂度:二分O(logn) 阅读全文
posted @ 2018-10-22 15:33 mrclr 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 一道最小割的题。 所有跟源点连边的点代表被解雇了,跟汇点连边的代表没被解雇。 因为割掉每一条边代表付出一定的代价,所以应该先把正收益加起来,然后再减去最小割。 那么对于所有解雇收益为正的点,从汇点连一条容量为该收益的边,割掉这条边代表不解雇这个人了,付出的代价就是这个收益;对于收益为负的点, 阅读全文
posted @ 2018-10-22 10:55 mrclr 阅读(137) 评论(0) 推荐(0) 编辑