2021年11月19日
摘要: 分析 先考虑单增,最好的方式就是不断地构造出长为 \(k\) 的单增序列,为保证后面序列不会成为前面单增序列的延续,每一个序列值域上需要完全高于下一个,即本段最小值大于下段最大值,同时显然如果超过 \(k\) 个序列单减则会超出要求,因此 \(k \times k>n\) 时则输出 \(-1\) 即 阅读全文
posted @ 2021-11-19 11:33 漠寒· 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 分析 首先看数据范围就知道这应该是一个 \(O(nk)\) 的题。考虑 dp。 用 \(f[i][j]\) 表示抓取了 \(i\) 个,最后一个是 \(j\) 的答案之和,\(g[i][j]\) 表示有多少种不同的抓取方案,最后答案就是所有满足要求的 \(f\) 之和除以对应的 \(g\)。 转移时 阅读全文
posted @ 2021-11-19 11:31 漠寒· 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 分析 看到数据范围就直接想状压。对于每一种状态,它的高度是一定的,你更改上下次序只会影响上面还能放多少重量,所以用 \(H[i]\) 预处理 \(i\) 这个状态总高度多少,用 \(f[i]\) 表示 \(i\) 这个状态最多上面还能放多少重量,转移应是新放的牛的承重量和被转移的 \(f\) 值减去 阅读全文
posted @ 2021-11-19 11:31 漠寒· 阅读(6) 评论(0) 推荐(0) 编辑
  2021年11月12日
摘要: 分析 考虑每次新增的有文件的机子能有几个,若当前已有 \(a\) 个,若 \(a\leq k\),那么本次就增加 \(a\) 个,否则本次就增加 \(k\) 个。所以先不断翻倍,直到个数大于 \(k\) 个,还需要传输的次数就是剩下的值需要减 \(k\) 减到小于等于 \(0\) 的次数了,一个除法 阅读全文
posted @ 2021-11-12 16:19 漠寒· 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题意 有 \(n\) 个人,他们要进行下面的进程:每轮设存活 \(i\) 个人,那么每个人会减少 \(i-1\) 的血量,血量小于等于零就会被淘汰,现在需要你给他们每个人设置一个在 \([1,x]\) 之间的初始血量,使得某轮游戏结束后,无人生还,求这样的方案数。 分析 考虑 dp 处理,以 \(f 阅读全文
posted @ 2021-11-12 16:18 漠寒· 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 分析 因为每一个面额都是前面面额的整数倍,所以最终得到的答案减一的合成方案里每一张钞票的张数,一定没有达到后一种面额和该种面额的比值,否则就能用更少的张数来替换,例如现在有 \(1\) 和 \(10\),你 \(1\) 最多用 \(9\) 张,要不然只用一张 \(10\) 就替代了,所以从小到大考虑 阅读全文
posted @ 2021-11-12 16:18 漠寒· 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 分析 读了下题,立马就想到了主席树,对每个点存一个值域线段树,存储其到根的路径上有哪些点,\(x\) 到 \(y\) 的路径就是他们线段树合起来再减去两倍 \(lca\) 的线段树,再把 \(lca\) 本身所含点加上即可。 然后发现每个点就比他爹线段树多含了它本身所含的点(就是那些住它那儿的)。所 阅读全文
posted @ 2021-11-12 16:17 漠寒· 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 分析 分组背包加并查集。 本题的并查集是最基本的满足传递性的朋友关系,所以直接合并即可。 然后用背包分组别进行运算,\(f[i]\) 表示计算了前面的组别后 \(i\) 的重量最多多少魅力值,\(g[i]\) 表示计算当前组后的对应答案,为保证分组正确性,避免在计算一个组时将单个个体计算多次,转移计 阅读全文
posted @ 2021-11-12 16:17 漠寒· 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 分析 我们如果已经找到了一条满足要求的路径,如果将它继续延伸的话,或值只会增加,所以你不管延伸多长都可以的。 所以考虑二分答案,先确定路径终点,二分最短能满足要求的延伸长度,然后该次贡献的答案就能通过深度轻松算出。 考虑二分的 check,我们用倍增来计算,\(f[i][j]\) 表示倍增到的点编号 阅读全文
posted @ 2021-11-12 16:16 漠寒· 阅读(31) 评论(0) 推荐(0) 编辑
  2021年11月11日
摘要: Gem 本题来源是出题人在 NOIP 联训中做到的一道题,当时的数据范围是本题的第二个 Subtask。当时出题人在这道题上 MLE 并得到了 0 分的好成绩。 下面的表述中,我们认为 \(0\) 对应红宝石,\(1\) 对应蓝宝石,整个序列为一个 \(01\) 序列。 考虑记前缀和的最大值为 \( 阅读全文
posted @ 2021-11-11 21:58 漠寒· 阅读(56) 评论(0) 推荐(0) 编辑