随笔分类 - 题解
一些题自己的看法
摘要:大抵是NOIP前写的最后一篇题解了吧。。。 flandre 80pts 赛时打的错解A了,然后证伪以后写了个更错的错解80pts; 考虑我们最终要求的答案是 数组从小到大排序后的一个后缀; 考虑怎样证明这个结论,感性理解一下就是尽量选大的然后挺对; 考虑比较严谨的证明; 如果序列中没有重
阅读全文
摘要:Happy Card 70pts 大样例乱搞都能过。。。 可以将“炸”看成“三带一”,那么我们最优是先出“三带一”; 首先分别算出原序列中每个数包含 的个数 ,以及模 余 的个数 ,然后进行判断, 如果 $ cnt \g
阅读全文
摘要:镜的绮想 (mirror) 100pts 考虑 的做法,发现我们可以对于每一对实点和虚点求它们的“镜面”,然后得到 个“镜面”,发现这些直线只可能是形如 的直线,所以我们直接乘 ,然后开
阅读全文
摘要:图 (a) 100pts 看到提示中有数一个数的二进制下 的个数,所以考虑怎么转化这个题,考虑开 个 bitset,第 个 bitset 中如果第 位是 ,代表存在边 ,否则不存在,对于每次修改,直接将
阅读全文
摘要:暴力操作(opt)30pts 这个错解可反悔贪心30pts; 考虑正解,我们只需考虑前 小的数即可; 考虑二分出一个中位数 ,那么我们要让大于它的都用最小的代价变小; 考虑如何求这个最小的代价,因为 $ \lfloor \frac{\lfloor \f
阅读全文
摘要:选取字符串 60pts 直接暴力60pts; 这题难点在于读懂题把。。。 考虑建出 树,然后在其中选出 个数,他们的 的深度的平方和就是这个答案,然后简单统计一下即可; 具体地,把 树建出来,然后求每 个点的 的
阅读全文
摘要:字符串构造机 100pts 原题,见[赛记] 多校A层冲刺NOIP2024模拟赛01【衡中】 T1; 忍者小队 60pts 赛时最后想出来个 的 DP,所以60pts; 对于这个DP,直接用 map 维护一下所有lcm的状态转移即可; 点击查看代码 #i
阅读全文
摘要:送信卒 100pts 直接上小数二分答案,然后check的时候跑dij,就没了; 点击查看代码 #include <iostream> #include <cstdio> #include <queue> #include <iomanip> using namespace std; int n,
阅读全文
摘要:星际联邦 80pts 前连20条,后连20条80pts。。。 考虑正解,发现向前连最大,向后连最小会出现重边,所以避免出现这种情况,我们只需要在做完向前连最大以后,在向后连最小的时候连不是同一个连通块的即可; 时间复杂度: ,瓶颈在排序; 其实这个思想就是最小
阅读全文
摘要:图书管理 85pts 2s 1e10助我85pts; 考虑正解,仍然是算贡献; 这个题有一个很通用的套路:将大于某数的数看成 ,小于这个数的数看成 ; 那么我们枚举 ,运用上面的套路将 左边的前缀和算出来并开个桶记录一下端点编号之和,然后在枚举 $ i
阅读全文
摘要:新的阶乘 100pts 当发现直接做不好做时,可以从贡献的角度考虑; 那么对于一个质数,我们只需要算出它的所有贡献,直接暴力算即可; 复杂度和埃氏筛差不多, ; 点击查看代码 #include <iostream> #include <cstdio>
阅读全文
摘要:暴力错解大赛 玩游戏 82pts 乱糊的错解,正确性和时间复杂度都不对,但是拿了82pts; 对于正解,考虑从 将原序列分成两个部分,左边和右边,然后分别求一次前缀和(注意这里,可以省去很多分讨和常数),设前一个前缀和数组为 ,后一个为 ,那么问题就转化成有两个指针
阅读全文
摘要:追逐游戏 (chase) 50pts 比较卡常; 考虑二分答案,发现我们只需要在知道答案的情况下找出终点即可,所以用倍增找出终点,最后判断一下合不合法即可; 时间复杂度: ,常数很大,赛时被卡常了; 当然也可以分讨做到 $ \Theta(n \log n)
阅读全文
摘要:冒泡排序 100pts 比较显然的签到题 (好久没这么水过了); 考虑这个错的冒泡排序,手模一下即可发现这个 有点像以前做过的同余系中求和的问题,于是这个题同理,用 set 维护每个同余系的排名,最后按顺序输出即可; 对于正确性,相当于每次 ,则就相当于在一个同余系中排序;
阅读全文
摘要:排列最小生成树 (pmst) 50pts 又是诈骗题,然后又不会。。。 暴力很暴力,直接建个完全图跑 Kruskal 即可; 正解考虑如果我们连接编号相邻的点,那么每个边的边权都小于 真能考虑到吗?; 所以我们最终的最小生成树中的边边权都小于 ; 那么对于 $ |p_i - p
阅读全文
摘要:玩水 (water) 100pts 一道结论题,考场一眼出,结果认为不对,然后被硬控了2h结果打出了个抽象DP然后过了; 赛后发现,这DP和那个结论是等价的。。。; 首先考虑只有两个人怎么做,那么我们只需找出一个位置 满足 $ a_{i + 1, j} = a_{i, j +
阅读全文
摘要:小 Z 的手套(gloves)100pts 最大值最小,考虑二分答案; 首先排序,然后每次找出数量较少的那个数组中的每个数 在另一个数组中有没有值在范围 的(其中 为二分的答案),其实只需找 就行,最后
阅读全文
摘要:这场数数 好数(number)100pts 找三个数的和,而且允许 ,那么我们可以维护出两个数的和,然后每次顺序遍历找这个数减去前面的某个数在任意两个数的和中有没有出现过,这个也是 的; 所以时间复杂度: ,如
阅读全文