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