摘要: 暴力明显超时,很容易想到开个桶。 类似 Eratosthenes 筛法统计答案即可。 阅读全文
posted @ 2018-02-26 14:48 312432424 阅读(82) 评论(0) 推荐(0) 编辑
摘要: n 似乎没有任何用。 先把鼹鼠按照出现顺序排序,然后如果打完第 i 只鼹鼠还能去打第 j 只鼹鼠必须第 j 只鼹鼠出现的时间 - 第 i 只鼹鼠出现的时间 <= 两只鼹鼠的哈曼顿距离。 阅读全文
posted @ 2018-02-26 14:38 312432424 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 以前见过类似的题。 先按照某种策略求一个耗时,时间尽量少。 用 f[ j ] 表示当第一台机器工作了 j 个单位时间时,另一台机器工作时间的最小值。 设 a[ i ] 表示只第一台机器完成第 i 个任务需要的时间,b[ i ] 表示只第二台机器完成需要的时间,c[ i ]表示两台机器一起完成需要的时 阅读全文
posted @ 2018-02-26 14:33 312432424 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 这题让我很容易想起了求最长上升子序列,但是直接朴素算法 O( n ^ 2 ) 会超时。 考虑数在 int 范围内,那只需要保存二进制下某位为 1 的数为结尾的最大长度即可。 阅读全文
posted @ 2018-02-26 14:23 312432424 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 求 [ 1 , n ] 范围内所有数因数的倍数,可以转化成求 [ 1 , n ] 范围内所有数在这个范围内倍数的个数。 阅读全文
posted @ 2018-02-26 14:19 312432424 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 假设你当前有 m 个金币,如果你可以任意组出小于等于 m / 2 个金币,那么只要加一个钱袋放 m - m / 2 个金币即可。 阅读全文
posted @ 2018-02-26 14:14 312432424 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 裸的 dinic 求最小割。 阅读全文
posted @ 2018-02-26 14:10 312432424 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 首先数字最多只有 30 种,很容易想到状压,用一个 int 来表示一个区间数字出现的状态。 很容易想到用线段树来维护一个区间数字出现的状态。 阅读全文
posted @ 2018-02-26 14:03 312432424 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 主席树的模板。 主席树用 n 棵线段树记录 [ 1 , i ] 段数字在区间内出现的个数。 如果数的范围很大,那就先离散化。 首先,每棵线段树有三个元素:左孩子编号,右孩子编号,区间内元素的个数。 设它的元素值为 [ l , r ],mid = ( l + r ) / 2,它的左孩子就记录了 [ l 阅读全文
posted @ 2018-02-26 13:57 312432424 阅读(115) 评论(0) 推荐(0) 编辑