摘要: 基本上把数位dp那一套给忘了,今天重学一遍. 感觉采用递推的方式还是蛮方便的,然后要注意几个细节: 1. 通常算 f(x+1)=calc(1,x),这样更方便算一些. 2. 每种小于最大长度的所有结果都要累加. 3. 很多时候不要忘记 0 的贡献. 4. 要特判前缀合不合法. code: #incl 阅读全文
posted @ 2020-06-11 21:53 EM-LGH 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 写代码时间:30-40min,调试时间:5min 我们发现,如果一个城市的一个点被选,则该城市其他点也都必须被选,可以考虑用点分治来解. 假设当前分治到的重心为 $x$,则只需考虑必经 $x$ 的连通块即可. 我们可以维护一个队列,开始的时候将重心的颜色放入,然后对每一种颜色的所有节点进行扩展:向上 阅读全文
posted @ 2020-06-11 14:44 EM-LGH 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 如果不会哈夫曼树理论的话这题很难做出来吧... 如果 K=2,就可以根据合并果子那样去构造. 然后 K>2 的话就构造 k 叉哈夫曼树,如果不满足 $(n-1) \% (k-1)$ 的话就自动补一些进去. code: #include <bits/stdc++.h> #define ll long 阅读全文
posted @ 2020-06-11 09:18 EM-LGH 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 我之前一直以为这道题很厉害,没想到就是一个整体二分模板题,就当省选前练练手了. 我们计算每个木棍是被哪个子弹所击碎的,然后这个显然具有单调性. 每一条木棍分别去二分答案的话时间复杂度大概是 $O(n^2 \log n)$ 的. 所以我们就采用整体二分的方式,然后判断的话用一个树状数组来一个区间加法就 阅读全文
posted @ 2020-06-11 08:37 EM-LGH 阅读(144) 评论(0) 推荐(0) 编辑