随笔分类 -  题解

题解:P1226 【模板】快速幂
摘要:朴素算法需要将 \(b\) 个 \(a\) 相乘,复杂度为 \(O(n)\),无法通过此题。 参考幂运算的性质,即: \[a^{m + n} = a^m \times a^n \]迁移至此题,可将 \(b\) 二进制拆分,定义函数 \(f(x)\) 为二进制下 \(b\) 的第 \(x\) 位是否为 阅读全文

posted @ 2025-03-04 18:55 zhangzirui66 阅读(5) 评论(0) 推荐(0) 编辑

题解:P1036 [NOIP 2002 普及组] 选数
摘要:\(n \le 20\) 首先想到搜索,使用 dfs 搜出所有搭配的和,判断是否为素数即可,具体见注释。 代码复杂度约为 \(O(2^n\sqrt{2^n})\),实际完全跑不满: #include<bits/stdc++.h> using namespace std; int n, k, a[25 阅读全文

posted @ 2025-02-28 21:46 zhangzirui66 阅读(8) 评论(0) 推荐(0) 编辑

题解:P1028 [NOIP 2001 普及组] 数的计算
摘要:咕了好久…… 闲话 建议将网页放大至 125%。 计数题优先考虑 dp。 dp 状态即 \(f_i\) 表示出现一个 \(i\) 后后面的答案。 转移公式易得为: \[f_i = \sum^{j = 1}_{\lfloor \frac{i}{2} \rfloor} + 1 \]这里稍作解释,求和即为 阅读全文

posted @ 2025-02-28 21:33 zhangzirui66 阅读(3) 评论(0) 推荐(0) 编辑

CF2067C 题解
摘要:闲话 本文同步发布在 cnblogs。 首先易得答案一定 \(\le 9\),因为一个数位增加数字 \(9\) 后,重复 \(9\) 次操作,一定出现过 \(0 \sim 9\) 的所有数字,这个手搓就可证明。 由于 \(n\) 的数据范围只有 \(10^9\),我们依次枚举仅含 \(9\) 的数, 阅读全文

posted @ 2025-02-12 19:47 zhangzirui66 阅读(17) 评论(0) 推荐(0) 编辑

CF2067B 题解
摘要:闲话 本文同步发布在 cnblogs。 容易发现,若想要让两个袋子物品相同,每种数字都应有偶数个。 这只是根据操作一得出的结论,我们还有操作二。 对于一个数字,我们有以下的贪心策略,其中 \(b_i\) 表示 \(i\) 在数组 \(a\) 中出现的次数,即一个桶: 若 \(b_i \ge 2\), 阅读全文

posted @ 2025-02-12 18:58 zhangzirui66 阅读(12) 评论(0) 推荐(0) 编辑

题解:P11697 [ROIR 2025] 二维蚱蜢
摘要:简单数学题,但是有些坑。 首先我们制定思路:怎样的路线才是最优路线? 显然走斜线是比较划算的,因为它相当于两次运动。 于是我们可以先走对角线,然后使用平移调整,为了方便讲述,我先给出代码: #include<bits/stdc++.h> using namespace std; int n, m, 阅读全文

posted @ 2025-02-11 17:56 zhangzirui66 阅读(17) 评论(0) 推荐(0) 编辑

诈骗系列之-CF2059C
摘要:闲话 本文同步发布在 cnblogs。 容易观察到一件事,一个队列只需要进行一次服务,否则前一次就是浪费了。 这样我们就会发现,最终所有队列的长度为 \(0 \sim n - 1\) 的排列。 这样我们就会发现对于每个队列,只有最下面的 \(1\) 是有用的,原因放在了本文最后。 对于每个 \(0 阅读全文

posted @ 2025-02-03 01:09 zhangzirui66 阅读(13) 评论(0) 推荐(0) 编辑

诈骗系列之-CF2059B
摘要:闲话 本文同步发布在 cnblogs。 诈骗好题,因数组开小吃掉两发罚时。 分两种情况: \(n = k\),比较简单,暴力模拟即可。 \(n \not = k\),此时思考一个问题: 如何使成本最小? 答案显而易见,设 \(a_i = x\),则使 \(a_{i + 1} \not = x + 1 阅读全文

posted @ 2025-02-03 00:51 zhangzirui66 阅读(8) 评论(0) 推荐(0) 编辑

P1004 [NOIP2000 提高组] 方格取数
摘要:容易发现本题要求最长带权路径,遂想到 dp。 这类问题的状态很好设计,用 \(f_{i, j}\) 表示走到格子 \(a_{i, j}\) 时的最长带权路径。 由于本题需要求两次,所以增加第二次的两维,合并为 \(f_{i, j, k, l}\),代表第一次走到格子 \(a_{i, j}\),第二次 阅读全文

posted @ 2025-01-30 22:39 zhangzirui66 阅读(13) 评论(0) 推荐(0) 编辑

题解:CF1096C Polygon for the Angle
摘要:闲话 本文同步发布在 cnblogs。 观察到角度最多只有 \(360\) 度,可以预处理。 外层循环 \(3 \sim 360\),计算答案。 正多边形可以构造外接圆,圆心角即为 \(\frac{360}{i}\),根据圆周角定理,圆周角是圆心角的一半,即 \(\frac{180}{i}\)。 内 阅读全文

posted @ 2025-01-12 11:59 zhangzirui66 阅读(6) 评论(0) 推荐(0) 编辑

题解:P1970 [NOIP2013 提高组] 花匠
摘要:闲话 本文同步发布在 cnblogs。 正题 容易发现此题要求花必须一高一低摆放。 最优化问题,看不出怎么贪心,遂 DP。 设计状态 \(f_{i, 0}\) 表示当前为上升形势最长花序列,\(f_{i, 1}\) 表示当前为下降形势最长花序列。 状态转移 由于需要一高一低,易得: \[f_{i, 阅读全文

posted @ 2025-01-11 22:12 zhangzirui66 阅读(13) 评论(0) 推荐(0) 编辑

题解:P2296 [NOIP2014 提高组] 寻找道路
摘要:条件第一步,要能到达 \(t\) 点,建反图跑一遍。记录哪些点可行。 第二步,扫描每个点,若其旁边均为标记过的,说明点的出边所指向的点都直接或间接与终点连通。记录这个点第二次 第三步,在原边枚举每条边,若两个节点均被记录了第二次,加入一个新图,否则扔掉。 对新图进行 BFS 即可。 代码: #inc 阅读全文

posted @ 2025-01-11 15:09 zhangzirui66 阅读(11) 评论(0) 推荐(0) 编辑

题解:P2822 [NOIP2016 提高组] 组合数问题
摘要:组合数,还是多测,考虑预处理所有答案。 组合数的递推公式如下,证明在本文底部: \[C_{i,j} = C_{i - 1, j} + C_{i - 1, j - 1} \]由于求的是是否能被 \(k\) 整除,转化式子为: \[C_{i,j} = (C_{i - 1, j} + C_{i - 1, 阅读全文

posted @ 2025-01-11 14:37 zhangzirui66 阅读(6) 评论(0) 推荐(0) 编辑

题解:P5019 [NOIP2018 提高组] 铺设道路
摘要:首先进行观察,发现第 \(i\) 块区域分为两种情况: \(a_i \le a_{i-1}\),此时 \(a_{i-1}\) 操作时可以带上它,无需额外操作,答案不变。 \(a_i > a_{i-1}\),此时前面带完后还需降低,答案补上差值 \(a_i - a_{i-1}\)。 枚举 \(i\) 阅读全文

posted @ 2025-01-11 14:19 zhangzirui66 阅读(16) 评论(0) 推荐(0) 编辑

题解:P11451 [USACO24DEC] It's Mooin' Time B
摘要:有点暴力的模拟做法。 观察到 moo 形式的字符串只会有 \(2\) 种字符,我们进行暴力枚举。 枚举 moo 叫的位置,分两种情况分讨: 理想情况,无损坏,判断即可,并记录此处已有 moo 叫。 坏掉了,由于只坏了一个,使用变量记录是否修复过,若没有,检查是否可修。 时间复杂度显然为 \(O(|s 阅读全文

posted @ 2025-01-11 14:18 zhangzirui66 阅读(45) 评论(0) 推荐(0) 编辑

题解:P11309 纷飞的樱花雨
摘要:一道小分讨。 坑点在于交换可以不相邻且不能自己交换。 观察到只要 \(k \ge 1\) 就一定能将最大值换到最前面,剩下的随便换就行。但 \(n=2\) 是例外,此时没有剩余可交换的,手动特判 \(k\) 的奇偶性即可。 若 \(k=0\),则直接计算答案。 整合即可得出代码: #include< 阅读全文

posted @ 2025-01-11 14:18 zhangzirui66 阅读(6) 评论(0) 推荐(0) 编辑

题解:CF2053B Outstanding Impressionist
摘要:首先观察到对于每个记忆只需满足它是独特的,所以当我们选择一个值时,除了 \(l=r\) 的所有记忆都能躲开它,当 \(l=r\) 时,记录一次 \(l\) 即可。 预处理每个记忆类型到 \(f\) 数组后(题面中限制了 \(1 \le l,r \le 2\times n\)),我们就得到了一个很有前 阅读全文

posted @ 2025-01-11 14:17 zhangzirui66 阅读(86) 评论(0) 推荐(0) 编辑

P5662 [CSP-J2019] 纪念品
摘要:DP 题。 容易发现一个物品如果持有多天,可以转换为每拿一天,就卖掉,如果明天还持有,再买回来即可。 为了方便,我们不妨叫它:长期持有定理。 定义 iii 为购买第 iii 件物品,jjj 为提供预算,kkk 表示第 kkk 天,ai,ja_{i,j}ai,j​ 代表物品 iii,第 jjj 天的价 阅读全文

posted @ 2024-12-22 20:57 zhangzirui66 阅读(2) 评论(0) 推荐(0) 编辑

P5661 [CSP-J2019] 公交换乘
摘要:首先暴力很好做,存下所有优惠票的数据,发现公交车就枚举每张票,最坏时间复杂度 O(n2)O(n^2)O(n2),无法通过。 注意到每张优惠票有效期只有 454545 分钟,且不会有两次乘车记录出现在同一分钟,所以最多只有 454545 张有效的票,其余票可以直接弹掉。 时间复杂度直接降到了 O(n) 阅读全文

posted @ 2024-12-22 20:22 zhangzirui66 阅读(7) 评论(0) 推荐(0) 编辑

P5660 [CSP-J2019] 数字游戏 题解
摘要:简单模拟题,循环统计 111 的个数即可,注意下标从 000 开始。 #include<bits/stdc++.h> using namespace std; int main(){ string s; int ans = 0; cin >> s; for(int i = 0; i < 8; i + 阅读全文

posted @ 2024-12-22 19:41 zhangzirui66 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示