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