摘要: 或曰,有学长两天授吾以十专题,吾顿感日月之紧迫,以专题竟不能以吾之所有,遂成此文,以记之。 阅读全文
posted @ 2024-07-24 12:11 Peppa_Even_Pig 阅读(39) 评论(0) 推荐(1) 编辑
摘要: 写在前面 $ DP $,是每个信息学竞赛选手所必会的算法,而 $ DP $ 中状态的转移又显得尤为关键。本文主要从状态的设计和转移入手,利用各种方法对朴素 $ DP $ 的时间复杂度和空间复杂度进行优化与处理,以达到满足题目要求的目的; 参考文献: 《算法竞赛进阶指南》 动态规划算法的优化技巧 毛子 阅读全文
posted @ 2024-06-12 19:12 Peppa_Even_Pig 阅读(404) 评论(10) 推荐(16) 编辑
摘要: 暴力操作(opt)30pts 这个错解可反悔贪心30pts; 考虑正解,我们只需考虑前 $ \frac n2 + 1 $ 小的数即可; 考虑二分出一个中位数 $ mid $,那么我们要让大于它的都用最小的代价变小; 考虑如何求这个最小的代价,因为 $ \lfloor \frac{\lfloor \f 阅读全文
posted @ 2024-11-20 09:14 Peppa_Even_Pig 阅读(15) 评论(0) 推荐(1) 编辑
摘要: 选取字符串 60pts 直接暴力60pts; 这题难点在于读懂题把。。。 考虑建出 $ KMP $ 树,然后在其中选出 $ k $ 个数,他们的 $ LCA $ 的深度的平方和就是这个答案,然后简单统计一下即可; 具体地,把 $ KMP $ 树建出来,然后求每 $ k $ 个点的 $ LCA $ 的 阅读全文
posted @ 2024-11-19 21:42 Peppa_Even_Pig 阅读(17) 评论(0) 推荐(1) 编辑
摘要: 字符串构造机 100pts 原题,见[赛记] 多校A层冲刺NOIP2024模拟赛01【衡中】 T1; 忍者小队 60pts 赛时最后想出来个 $ \Theta(n^2 \log n) $ 的 DP,所以60pts; 对于这个DP,直接用 map 维护一下所有lcm的状态转移即可; 点击查看代码 #i 阅读全文
posted @ 2024-11-18 15:18 Peppa_Even_Pig 阅读(35) 评论(1) 推荐(4) 编辑
摘要: 送信卒 100pts 直接上小数二分答案,然后check的时候跑dij,就没了; 点击查看代码 #include <iostream> #include <cstdio> #include <queue> #include <iomanip> using namespace std; int n, 阅读全文
posted @ 2024-11-13 08:17 Peppa_Even_Pig 阅读(16) 评论(0) 推荐(3) 编辑
摘要: 星际联邦 80pts 前连20条,后连20条80pts。。。 考虑正解,发现向前连最大,向后连最小会出现重边,所以避免出现这种情况,我们只需要在做完向前连最大以后,在向后连最小的时候连不是同一个连通块的即可; 时间复杂度:$ \Theta(n \log n) $ ,瓶颈在排序; 其实这个思想就是最小 阅读全文
posted @ 2024-11-10 19:48 Peppa_Even_Pig 阅读(33) 评论(5) 推荐(2) 编辑
摘要: 图书管理 85pts 2s 1e10助我85pts; 考虑正解,仍然是算贡献; 这个题有一个很通用的套路:将大于某数的数看成 $ 1 $,小于这个数的数看成 $ -1 $; 那么我们枚举 $ a_i $,运用上面的套路将 $ i $ 左边的前缀和算出来并开个桶记录一下端点编号之和,然后在枚举 $ i 阅读全文
posted @ 2024-11-08 16:14 Peppa_Even_Pig 阅读(13) 评论(0) 推荐(3) 编辑
摘要: 新的阶乘 100pts 当发现直接做不好做时,可以从贡献的角度考虑; 那么对于一个质数,我们只需要算出它的所有贡献,直接暴力算即可; 复杂度和埃氏筛差不多,$ \Theta(n \log \log n) $; 点击查看代码 #include <iostream> #include <cstdio> 阅读全文
posted @ 2024-11-08 15:35 Peppa_Even_Pig 阅读(9) 评论(0) 推荐(3) 编辑
摘要: 书街上文 阅读全文
posted @ 2024-11-08 11:40 Peppa_Even_Pig 阅读(45) 评论(6) 推荐(5) 编辑
摘要: 暴力错解大赛 玩游戏 82pts 乱糊的错解,正确性和时间复杂度都不对,但是拿了82pts; 对于正解,考虑从 $ k $ 将原序列分成两个部分,左边和右边,然后分别求一次前缀和(注意这里,可以省去很多分讨和常数),设前一个前缀和数组为 $ a $,后一个为 $ b $,那么问题就转化成有两个指针 阅读全文
posted @ 2024-11-08 09:57 Peppa_Even_Pig 阅读(16) 评论(0) 推荐(1) 编辑
摘要: PKP 阅读全文
posted @ 2024-11-07 20:53 Peppa_Even_Pig 阅读(20) 评论(0) 推荐(3) 编辑
摘要: 四舍五入 100pts 对于一个数 $ x $ ,可以发现它的答案可以分成两部分,一部分在 $ [2x + 1, n] $ 范围内,一部分在小于它的数的范围内,前者 $ \Theta(1) $ 算,对于后者,我们发现满足这个要求的数 $ y $ 有 $ x \mod y < w(x, y) $ ( 阅读全文
posted @ 2024-11-04 09:50 Peppa_Even_Pig 阅读(12) 评论(0) 推荐(2) 编辑
摘要: 追逐游戏 (chase) 50pts 比较卡常; 考虑二分答案,发现我们只需要在知道答案的情况下找出终点即可,所以用倍增找出终点,最后判断一下合不合法即可; 时间复杂度:$ \Theta(n \log^2 n) $,常数很大,赛时被卡常了; 当然也可以分讨做到 $ \Theta(n \log n) 阅读全文
posted @ 2024-10-30 08:27 Peppa_Even_Pig 阅读(26) 评论(1) 推荐(2) 编辑
摘要: 冒泡排序 100pts 比较显然的签到题 (好久没这么水过了); 考虑这个错的冒泡排序,手模一下即可发现这个 $ +k $ 有点像以前做过的同余系中求和的问题,于是这个题同理,用 set 维护每个同余系的排名,最后按顺序输出即可; 对于正确性,相当于每次 $ +k $,则就相当于在一个同余系中排序; 阅读全文
posted @ 2024-10-24 19:57 Peppa_Even_Pig 阅读(19) 评论(0) 推荐(2) 编辑
摘要: 排列最小生成树 (pmst) 50pts 又是诈骗题,然后又不会。。。 暴力很暴力,直接建个完全图跑 Kruskal 即可; 正解考虑如果我们连接编号相邻的点,那么每个边的边权都小于 $ n $ 真能考虑到吗?; 所以我们最终的最小生成树中的边边权都小于 $ n $; 那么对于 $ |p_i - p 阅读全文
posted @ 2024-10-21 20:16 Peppa_Even_Pig 阅读(21) 评论(2) 推荐(1) 编辑
摘要: 玩水 (water) 100pts 一道结论题,考场一眼出,结果认为不对,然后被硬控了2h结果打出了个抽象DP然后过了; 赛后发现,这DP和那个结论是等价的。。。; 首先考虑只有两个人怎么做,那么我们只需找出一个位置 $ (i, j) $ 满足 $ a_{i + 1, j} = a_{i, j + 阅读全文
posted @ 2024-10-16 18:02 Peppa_Even_Pig 阅读(24) 评论(0) 推荐(2) 编辑
摘要: PSP 阅读全文
posted @ 2024-10-15 19:11 Peppa_Even_Pig 阅读(80) 评论(13) 推荐(5) 编辑
摘要: 小 Z 的手套(gloves)100pts 最大值最小,考虑二分答案; 首先排序,然后每次找出数量较少的那个数组中的每个数 $ x $ 在另一个数组中有没有值在范围 $ [x - mid, x + mid] $ 的(其中 $ mid $ 为二分的答案),其实只需找 $ x - mid $ 就行,最后 阅读全文
posted @ 2024-10-13 09:17 Peppa_Even_Pig 阅读(14) 评论(0) 推荐(1) 编辑
摘要: 这场数数 好数(number)100pts 找三个数的和,而且允许 $ \Theta(n^2) $,那么我们可以维护出两个数的和,然后每次顺序遍历找这个数减去前面的某个数在任意两个数的和中有没有出现过,这个也是 $ \Theta(n^2) $ 的; 所以时间复杂度:$ \Theta(n^2) $,如 阅读全文
posted @ 2024-10-13 08:45 Peppa_Even_Pig 阅读(9) 评论(0) 推荐(1) 编辑
摘要: 咋整半夜搞个比赛呢 J组还有5min。。。 不是,开始了咋不给我看题呢。。。 阅读全文
posted @ 2024-10-12 17:25 Peppa_Even_Pig 阅读(28) 评论(2) 推荐(4) 编辑
摘要: 这场ACCODERS忘交,结果最后想起来匆匆只交了T1,然后文件名还没改,所以爆零了。。。 02表示法 100pts 高精度,不说了; 点击查看代码 #include <iostream> #include <cstdio> #include <string> #include <cmath> #i 阅读全文
posted @ 2024-10-10 17:23 Peppa_Even_Pig 阅读(16) 评论(0) 推荐(0) 编辑