随笔分类 - 题解
P3193 [HNOI2008]GT考试
摘要:先考虑朴素的 dp。 由于涉及到匹配问题,只有一个串,考虑 kmp。 状态表示 设 表示长度为 的字符串,与不吉利串的匹配长度为 的总方案数。 状态转移 枚举待添加的字符 ,然后计算添加后的最大匹配长度 (这里显然 ),所以 $$f
题解 P2480 [SDOI2010]古代猪文
摘要:题意 求 一道非常好的数论题,用到了基本所有的基础数论知识。 需要使用到的数论知识 欧拉定理 逆元 lucas 定理 中国剩余定理 对式子变形 先令 $\sum\lim
CSP2022 J2 练习十四
摘要:寄的死死的,被吊着打 Problem A 可见点数 欧拉函数模板题。 结论:一个点 是可见的当且仅当 。 证明: 假设存在一个点 , 能被看到,那么 和 $\left(\dfrac{x}
题解 CF1703G Good Key, Bad Key
摘要:先放个代码。 int n, k; cin >> n >> k; vector<vector<int>> a(n + 5, vector<int>(35)); for (int i = 1; i <= n; i ++ ) { cin >> a[i][0]; for (int j = 1; j <= 3
CF1579F Array Stabilization (AND version) 题解
摘要:题目传送门 分析 根据 操作的性质,只要有一个 存在,这个数记作 ,那么 就可以变成 ,然后 又可以继续更新下一个数为 ,所以直接 bfs 解决即可。 最终的答案即为 bfs 的次数。注意
P4588 [TJOI2018]数学计算 题解
摘要:题目传送门 题意简述 初值为 ,要求支持以下操作: 操作 1:将 ,输出 ; 操作 2:将 , 是第 次操作时乘上的数,输出 \(x\m
P2107 小Z的AK计划 题解
摘要:题目传送门 分析 考虑一个贪心,由于 呈线性排列,我们一定要保证去到的机房越多越好,所以将 排序,每次前往最近的机房,如果可以 AK 则 AK,累加答案。 代码实现 我相信我的解法一定有漏洞,欢迎各位 dalao 来 hack。 #include <bits/stdc++
CF1637A Sorting Parts 题解
摘要:题目传送门 题意简述 给你一个长度为 的数组 ,你可以选择 的一个数 ,分别对 和 排序,如果存在一个 能使数组非升序输出 YES,否则输出 NO。 分析 这题我的考场
P8152 「PMOI-5」破译の论 题解
摘要:题目传送门 分析 第一次划分会变成 块,之后每次划分都会增加 块(减一是因为自己那一块不能重复算),所以答案就是 。 需要注意一下取模。 代码实现 #include <bits/stdc++.h> using namespa
CF399B Red and Blue Balls 题解
摘要:题目传送门 分析 本题暴力解法会 TLE,所以我们需要进一步分析。 定义状态 表示把前 个球全部变为红色的步数,那么如果第 个球是蓝色的话,我们需要做如下操作: 把前 个球弹出; 把第 个球变成红色; 把第 个球前面填上
CF1631A Min Max Swap 题解
摘要:题目传送门 题意简述 给定数组 和 ,可以交换下标相同的两个元素。让 数组的最大值和 数组的最大值之积最小。 分析 想象一个长方形,它的周长是固定的,那怎么分配长和宽才能让面积尽可能的小呢? 就假设周长是 ,则长宽之和是 ,列下表格
P3831 [SHOI2012]回家的路 题解
摘要:题目传送门 分析 解法 1: 每两个点都连边,跑裸的最短路。 显然, 和 非常大,暴力连边会 TLE 和 MLE。 解法 2(正解): 首先,对答案产生贡献的只有换乘站,所以我们只用连两种边: 一个换乘站看作 个节点,连边,边权为 (站内换乘)。 将 \(
P1197 [JSOI2008]星球大战 题解
摘要:题目传送门 题意简述 给定一张无向图,每次删去一个节点,问每次操作后的连通块个数。 分析 ,如果每次暴力删点再 bfs,必定超时。 还记得上次提到的 [USACO16OPEN]Closing the Farm 吗?这两题非常非常相似,我
P1137 旅行计划 题解
摘要:题目传送门 题意简述 给定一张有向图,起点任意,求出到每个点经过的最多点数和。 分析 先把图画出来: 一开始做这题的时候以为是非常简单的最短(长)路,但是发现起点是任意的,没有源点,所以我们就不能用 SPFA 啦反正都死了( 事实上,我们可以对这张图进行拓扑排序,将入度为 的节点 \(d
P1396 营救 题解
摘要:题目传送门 分析 这题有好几种方法可以做,有跑最短路的,有些最小生成树的。这里介绍最短路的方法。 单源最短路径,很自然地想到 Dijkstra。不过题目要求的是最大值最小,所以松弛就要改成: if(dis[v]>max(dis[u],e[i].w)) dis[v]=max(dis[u],e[i].w
「THOI」THOI Round1 赛后题解
摘要:A. 出题 题目传送门 该题正解 dp,数据略水,暴力都过了。 完全背包问题,只不过要求刚好装满,所以 数组可以全部赋值为一个特殊的数,只有刚好装到这个容量时才能转移。 代码实现: #include <bits/stdc++.h> using namespace std; int f[4
[USACO16OPEN]Closing the Farm 题解
摘要:本题有两道一模一样的题目,改个数据范围即可 AC。 题目1 | 题目2 题意简述 给定一张无向图,每次删去一个点,问每次操作后图是否联通。 分析 判断图是否联通可以想到使用并查集来维护。但是并查集很难实现删除操作,那如何处理呢? 并查集的核心是“并”和“查”,既然题目要求每次删去一个点,那不如反过来
P1057 [NOIP2008 普及组] 传球游戏 题解
摘要:题目传送门 分析 这道题可以用 dp 来做。设 为第 次传球传到第 个人的方案数。一个球可以从左边传过来(),也可以从右边传过来()。那么 \(f_{i,j}=\begin{cases}1,&i=1\&j=0,\\f_{n,
P1958 上学路线 题解
摘要:题目传送门 题意简述 一张地图,只能往上往右走,其中有 个障碍不能走上去,问从 走到 有几种方案。 分析 首先,我们将棋盘倒置方便处理,也就是说只能往下往右走。 动态规划。设 表示从 走到 \(f_{i,