摘要:
分析 考虑每次新增的有文件的机子能有几个,若当前已有 \(a\) 个,若 \(a\leq k\),那么本次就增加 \(a\) 个,否则本次就增加 \(k\) 个。所以先不断翻倍,直到个数大于 \(k\) 个,还需要传输的次数就是剩下的值需要减 \(k\) 减到小于等于 \(0\) 的次数了,一个除法 阅读全文
摘要:
题意 有 \(n\) 个人,他们要进行下面的进程:每轮设存活 \(i\) 个人,那么每个人会减少 \(i-1\) 的血量,血量小于等于零就会被淘汰,现在需要你给他们每个人设置一个在 \([1,x]\) 之间的初始血量,使得某轮游戏结束后,无人生还,求这样的方案数。 分析 考虑 dp 处理,以 \(f 阅读全文
摘要:
分析 因为每一个面额都是前面面额的整数倍,所以最终得到的答案减一的合成方案里每一张钞票的张数,一定没有达到后一种面额和该种面额的比值,否则就能用更少的张数来替换,例如现在有 \(1\) 和 \(10\),你 \(1\) 最多用 \(9\) 张,要不然只用一张 \(10\) 就替代了,所以从小到大考虑 阅读全文
摘要:
分析 读了下题,立马就想到了主席树,对每个点存一个值域线段树,存储其到根的路径上有哪些点,\(x\) 到 \(y\) 的路径就是他们线段树合起来再减去两倍 \(lca\) 的线段树,再把 \(lca\) 本身所含点加上即可。 然后发现每个点就比他爹线段树多含了它本身所含的点(就是那些住它那儿的)。所 阅读全文
摘要:
分析 分组背包加并查集。 本题的并查集是最基本的满足传递性的朋友关系,所以直接合并即可。 然后用背包分组别进行运算,\(f[i]\) 表示计算了前面的组别后 \(i\) 的重量最多多少魅力值,\(g[i]\) 表示计算当前组后的对应答案,为保证分组正确性,避免在计算一个组时将单个个体计算多次,转移计 阅读全文
摘要:
分析 我们如果已经找到了一条满足要求的路径,如果将它继续延伸的话,或值只会增加,所以你不管延伸多长都可以的。 所以考虑二分答案,先确定路径终点,二分最短能满足要求的延伸长度,然后该次贡献的答案就能通过深度轻松算出。 考虑二分的 check,我们用倍增来计算,\(f[i][j]\) 表示倍增到的点编号 阅读全文