随笔分类 -  题解

题解 CF797E Array Queries
摘要:分析 根号分治题。 发现 \(p\) 是单增的,且每次至少增加 \(k\)。所以如果 \(k\) 很大,我们直接暴力跳很少的次数就能跳出去,如果确定了一个 \(k\) 值,我们可以倒序 \(O(n)\) 处理出每个位置作为起点需要跳多少次才能跳出。 如果将前后两个综合起来,在 \(k\) 大于 \( 阅读全文
posted @ 2021-12-16 15:29 漠寒· 阅读(38) 评论(0) 推荐(0)
题解 CF1290F Making Shapes
摘要:分析 因为题目要求最终形状为一个凸包,所以你只要确定了要选哪些向量以及每个向量用几次,最终形成的那个多边形就固定了。 所以只需考虑最终式子是什么,得到 \(\sum_{i=1}^nx_i=0\),\(\sum_{i=1}^ny_i=0\)。然后你画出图形后会发现横纵轴的最长扩展长度就是只为正的 \( 阅读全文
posted @ 2021-12-16 15:28 漠寒· 阅读(68) 评论(0) 推荐(0)
题解 P5787 二分图 /【模板】线段树分治
摘要:分析 线段树分治呢,处理的就是这些基于时间上的物品加入删除问题,我们将所有事件离线处理,每一个询问代表一个时刻,对于每一个物品,处理它所存在的时段,概括一下就是用线段树来处理每一个物品能对哪些询问起作用。 所以线段树每一个节点就代表了一个时段,而在询问中我们通常是找某一个时间点,所以类似于标记永久化 阅读全文
posted @ 2021-12-16 15:28 漠寒· 阅读(41) 评论(0) 推荐(0)
题解 CF601E A Museum Robbery
摘要:分析 第一道线段树分治题祭。 线段树分治呢,处理的好像就是这些基于时间上的物品加入删除问题,我们将所有事件离线处理,每一个询问代表一个时刻,对于每一个物品,处理它所存在的时段,概括一下就是用线段树来处理每一个物品能对哪些询问起作用。 所以线段树每一个节点就代表了一个时段,而在询问中我们通常是找某一个 阅读全文
posted @ 2021-12-16 15:27 漠寒· 阅读(49) 评论(0) 推荐(0)
题解 P7706 「Wdsr-2.7」文文的摄影布置
摘要:分析 这道题属于考察对于合并时不同最佳状态的讨论,我们考虑最后选出来的那三张照片位置在哪里,发现有四种情况(中间隔开处为线段树区间的 \(mid\))。 1、\(ijk\)|。 2、|\(ijk\)。 3、\(ij\)|\(k\)。 4、\(i\)|\(jk\)。 显然前两种情况就是子节点的答案,而 阅读全文
posted @ 2021-12-16 15:26 漠寒· 阅读(81) 评论(0) 推荐(1)
题解 P3705 [SDOI2017]新生舞会
摘要:分析 做了几道分数规划题,选一些来写题解。 首先观察答案形式,就是求最终 \((\dfrac{\sum a_i'}{\sum b_i'})\geqslant ans\) 最大的 \(ans\),在转化一下形式,就是 \(\sum a_i'-ans\times b_i'\geqslant 0\)。 所 阅读全文
posted @ 2021-12-16 15:26 漠寒· 阅读(32) 评论(0) 推荐(0)
题解 P7948 [✗✓OI R1] 前方之风
摘要:分析 听同学说调了很久,主页也看到好几个帖子,就来看了看,受二分误导调了很久,但显然正确性有问题,考虑对同一组数据 \(k\) 变化的影响。 显然,在删数时只会导致能删的更多,\(k\) 变小也会使删的更多,所以先读入所有的 \(k\),自大到小排序处理,这样答案单调递减,每个数就只用删一次就可以了 阅读全文
posted @ 2021-11-19 11:33 漠寒· 阅读(96) 评论(0) 推荐(0)
题解 P7957 [COCI2014-15#6] KRATKI
摘要:分析 先考虑单增,最好的方式就是不断地构造出长为 \(k\) 的单增序列,为保证后面序列不会成为前面单增序列的延续,每一个序列值域上需要完全高于下一个,即本段最小值大于下段最大值,同时显然如果超过 \(k\) 个序列单减则会超出要求,因此 \(k \times k>n\) 时则输出 \(-1\) 即 阅读全文
posted @ 2021-11-19 11:33 漠寒· 阅读(33) 评论(0) 推荐(0)
题解 P5131 荷取融合
摘要:分析 首先看数据范围就知道这应该是一个 \(O(nk)\) 的题。考虑 dp。 用 \(f[i][j]\) 表示抓取了 \(i\) 个,最后一个是 \(j\) 的答案之和,\(g[i][j]\) 表示有多少种不同的抓取方案,最后答案就是所有满足要求的 \(f\) 之和除以对应的 \(g\)。 转移时 阅读全文
posted @ 2021-11-19 11:31 漠寒· 阅读(36) 评论(0) 推荐(0)
题解 [USACO14DEC]Guard Mark G
摘要:分析 看到数据范围就直接想状压。对于每一种状态,它的高度是一定的,你更改上下次序只会影响上面还能放多少重量,所以用 \(H[i]\) 预处理 \(i\) 这个状态总高度多少,用 \(f[i]\) 表示 \(i\) 这个状态最多上面还能放多少重量,转移应是新放的牛的承重量和被转移的 \(f\) 值减去 阅读全文
posted @ 2021-11-19 11:31 漠寒· 阅读(18) 评论(0) 推荐(0)
题解 CF1606B Update Files
摘要:分析 考虑每次新增的有文件的机子能有几个,若当前已有 \(a\) 个,若 \(a\leq k\),那么本次就增加 \(a\) 个,否则本次就增加 \(k\) 个。所以先不断翻倍,直到个数大于 \(k\) 个,还需要传输的次数就是剩下的值需要减 \(k\) 减到小于等于 \(0\) 的次数了,一个除法 阅读全文
posted @ 2021-11-12 16:19 漠寒· 阅读(107) 评论(0) 推荐(0)
题解 CF1606E Arena
摘要:题意 有 \(n\) 个人,他们要进行下面的进程:每轮设存活 \(i\) 个人,那么每个人会减少 \(i-1\) 的血量,血量小于等于零就会被淘汰,现在需要你给他们每个人设置一个在 \([1,x]\) 之间的初始血量,使得某轮游戏结束后,无人生还,求这样的方案数。 分析 考虑 dp 处理,以 \(f 阅读全文
posted @ 2021-11-12 16:18 漠寒· 阅读(128) 评论(0) 推荐(0)
题解 CF1606C Banknotes
摘要:分析 因为每一个面额都是前面面额的整数倍,所以最终得到的答案减一的合成方案里每一张钞票的张数,一定没有达到后一种面额和该种面额的比值,否则就能用更少的张数来替换,例如现在有 \(1\) 和 \(10\),你 \(1\) 最多用 \(9\) 张,要不然只用一张 \(10\) 就替代了,所以从小到大考虑 阅读全文
posted @ 2021-11-12 16:18 漠寒· 阅读(85) 评论(0) 推荐(0)
题解 CF741B Arpa's weak amphitheater and Mehrdad's valuable
摘要:分析 分组背包加并查集。 本题的并查集是最基本的满足传递性的朋友关系,所以直接合并即可。 然后用背包分组别进行运算,\(f[i]\) 表示计算了前面的组别后 \(i\) 的重量最多多少魅力值,\(g[i]\) 表示计算当前组后的对应答案,为保证分组正确性,避免在计算一个组时将单个个体计算多次,转移计 阅读全文
posted @ 2021-11-12 16:17 漠寒· 阅读(50) 评论(0) 推荐(0)
题解 CF587C Duff in the Army
摘要:分析 读了下题,立马就想到了主席树,对每个点存一个值域线段树,存储其到根的路径上有哪些点,\(x\) 到 \(y\) 的路径就是他们线段树合起来再减去两倍 \(lca\) 的线段树,再把 \(lca\) 本身所含点加上即可。 然后发现每个点就比他爹线段树多含了它本身所含的点(就是那些住它那儿的)。所 阅读全文
posted @ 2021-11-12 16:17 漠寒· 阅读(74) 评论(0) 推荐(0)
题解 P6038 「ACOI2020」惊吓路径
摘要:分析 我们如果已经找到了一条满足要求的路径,如果将它继续延伸的话,或值只会增加,所以你不管延伸多长都可以的。 所以考虑二分答案,先确定路径终点,二分最短能满足要求的延伸长度,然后该次贡献的答案就能通过深度轻松算出。 考虑二分的 check,我们用倍增来计算,\(f[i][j]\) 表示倍增到的点编号 阅读全文
posted @ 2021-11-12 16:16 漠寒· 阅读(35) 评论(0) 推荐(0)
题解 P4113【HEOi2012】采花
摘要:分析 考虑对每一种花,它在区间内能做贡献当且仅当区间内有两朵以上该种类的花,所以我们对每一个右端点,使它左侧每一种花的倒数第二个位置做贡献,这样能保证贡献被统计正确,避免选漏,然后就转化为前缀问题,用树状数组 \(logn\) 即可解决,然后将询问按右端点排序,每次右移时将它前面同类型的贡献加一,前 阅读全文
posted @ 2021-10-31 11:43 漠寒· 阅读(29) 评论(0) 推荐(0)
题解 P2572序列操作
摘要:分析 对连续值和求和的询问都是比较板的,这里讲修改,赋值和翻转分别设置一个标记,思考它们的优先级,显然赋值高于翻转,所以在赋值时应清空翻转标记,在翻转时优先考虑能不能直接将赋值标记异或一,否则在改变自身即可。 Code #include<bits/stdc++.h> using namespace 阅读全文
posted @ 2021-10-31 11:29 漠寒· 阅读(78) 评论(0) 推荐(0)
题解 P1783 海滩防御
摘要:分析 首先看题目发现这是一个连通性问题,就是在某个半径下一些塔的控制范围有重叠部分,两塔有重叠就说明它们连成了一片,同理若某塔控制了海滩边缘,这一侧边缘也与它相连,海滩受保护当且仅当左右摊联通,显然这是一个满足二分的东西,半径越大可连的边单调不降,但我们并不需要二分,只需要一次找出所有边,然后按边权 阅读全文
posted @ 2021-10-31 09:32 漠寒· 阅读(54) 评论(0) 推荐(0)
题解 CF1579C Ticks
摘要:分析 题意 给出 \(n\),\(m\),\(k\),给出一个大小为 \(nm\) 的矩形。矩形仅包含 " * " 和 " . "。需要你用任意个仅包含 " * " 的开口向上 v 形结构,两边斜率为1,且边长严格大于 \(k\)(包含交点),来包含所有矩形的 " * "。 做法 用 \(vis(i 阅读全文
posted @ 2021-10-19 08:16 漠寒· 阅读(82) 评论(0) 推荐(0)