11 2019 档案
摘要:题目涉及算法: 数字游戏:字符串入门题; 公交换乘:模拟; 纪念品:完全背包; 数字游戏:广搜/最短路。 数字游戏 题目链接: "https://www.luogu.com.cn/problem/P5660" 题目大意:求一个长度为8的字符串中有多少个字符0。 题解: 首先开一个变量用于计数(我称此
阅读全文
摘要:首先来看一道我编的题: 安娜写宋词 题目背景 "洛谷P5664 Emiya 家今天的饭【民间数据】" 的简化版本。 题目描述 安娜准备去参加宋词大赛,她一共掌握 $n$ 个 __词牌名__ ,并且她的宋词总共有 $m$ 个不同的 __主题__ 。 为了方便描述,我们对词牌名从 $1$ ~ $n$ 编
阅读全文
摘要:题目链接: "http://poj.org/problem?id=2186" 题目大意: 每头牛都想成为牛群中的红人。 给定N头牛的牛群和M个有序对(A, B),(A, B)表示牛A认为牛B是红人; 该关系具有传递性,所以如果牛A认为牛B是红人,牛B认为牛C是红人,那么牛A也认为牛C是红人。 不过,
阅读全文
摘要:题目涉及算法: 标题统计:字符串入门题; 龙虎斗:数学题; 摆渡车:动态规划; 对称二叉树:搜索。 标题统计 题目链接: "https://www.luogu.org/problem/P5015" 这道题目是一道基础题,考察你字符(串)的输入。 实现代码如下: 龙虎斗 题目链接: "https://
阅读全文
摘要:题目出处: "http://codeforces.com/problemset/problem/2/B" 题目描述 给你一个 $n \times n$ 的二维数组,它包含的元素都是非负整数。你需要寻找一条满足如下条件的行走路线: 这条路线的起始位置在二维数组的左上角; 每一步你只可以从当前的位置往右
阅读全文
摘要:题目链接: "http://poj.org/problem?id=2976" 关于 __0/1分数规划__ 参见 "这篇博客" 实现代码如下:
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P1144" 其实这道题目是最短路的变形题,因为数据范围 $N \le 10^6, M \le 2 \times 10^6$ ,所以直接用Dijkstra算法是不行的,可以使用 Dijkstra+堆优化 或者 SPFA算法来实
阅读全文
摘要:其中高精度乘法通过了POJ2389,其他没有测过,不过应该是没有问题的。 其中高精度除法返回一对string,分别表示商和余数。 代码: c++ include using namespace std; const int maxn = 100010; int a[maxn], b[maxn], r
阅读全文
摘要:题目链接: "http://acm.hdu.edu.cn/showproblem.php?pid=3746" 题目大意:给你一个串 $s$ ,要求 $s$ 的开头或结尾添加最少的字符,使得添加后的串可以表示为 $K$ 个相同的子串的拼接 $(K =2)$ 。 题目分析:首先如果这个串s已经是一个循环
阅读全文
摘要:题目链接: "http://poj.org/problem?id=3080" 题目大意:给你N个长度为60的字符串(N=3)。 题目分析:KMP字符串匹配基础题。直接枚举第1个字符串的所有子串,判断这个子串是否出现在另外N 1个串中。 实现代码如下: c++ include include incl
阅读全文
摘要:题目链接: "http://poj.org/problem?id=2185" 题目大意:求一个二维的字符串矩阵的最小覆盖子矩阵,即这个最小覆盖子矩阵在二维空间上不断翻倍后能覆盖原始矩阵。 题目分析:next函数的应用。需要枚举每一行每一列的字符串所对应的的 $nxt[]$ 值,然后通过分析计算出最小
阅读全文
摘要:题目链接: "http://poj.org/problem?id=2752" 题目大意:给你一个字符串 $S$ ,如果它的一个前缀同时也是它的后缀,则输出这个前缀(后缀)的长度。 题目分析:next函数的一个应用。我们设 $S$ 串的长度为 $n$ ,则我们首先设 $j=n 1$ ,然后只要 $nx
阅读全文
摘要:题目链接: "http://poj.org/problem?id=2406" 题目大意:给你一个字符串 $t$ ,$t$ 可以表示为另一个小字符串循环了 $K$ 了,求最大的循环次数 $K$ 。 题目分析:设字符串长度为 $m$ ,如果 $m 1 nxt[m 1]$ 能够整除 $m$ ,则 $K=m
阅读全文
摘要:题目链接: "http://acm.hdu.edu.cn/showproblem.php?pid=2087" 题目大意:给定字符串 $s$ 和 $t$ ,找出 $s$ 中出现不重叠的 $t$ 的最多次数。 举个例子,$s$ 串为 "abababa" , $t$ 串为 "aba" ,虽然 $s[0..
阅读全文
摘要:题目链接: "http://acm.hdu.edu.cn/showproblem.php?pid=1711" 题目大意:最基础的字符串匹配,只不过这里用整数数组代替了字符串。 给你两个数组 $a[1..N]$ 和 $b[1..M]$ ,找到最小的 $K$ 使得 $a[K] = b[1], a[K +
阅读全文
摘要:题目链接: "http://acm.hdu.edu.cn/showproblem.php?pid=1358" 题目大意:给你一个长度为 $n$ 的字符串 $s$ ,那么它有 $n$ 个前缀。 对于第 $i$ 个前缀 $t$ ,如果他们表示成一个子串重复 $K$ 次 $(K 1)$ ,那么我们就输出这
阅读全文
摘要:题目链接: "http://acm.hdu.edu.cn/showproblem.php?pid=1686" 题目大意:给你一个子串t和一个母串s,求s中有多少个子串t。 题目分析:KMP模板题。 :计算字符串t的nxt函数; :计算s中包含多少个t。 实现代码如下:
阅读全文
摘要:题目链接: "http://acm.hdu.edu.cn/showproblem.php?pid=3336" 题目大意:找出字符串s中和s的前缀相同的所有子串的个数。 题目分析:KMP模板题。这道题考虑 数组的应用。以 结尾的子串中一共有多少个子串可以作为s的前缀呢?我们只要令 每当 就可以了。 当
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P3313" 这道题目就是树链剖分+线段树动态开点。 然后做这道题目之前我们先来看一道不考虑树链剖分之后完全相同的线段树动态开点的题目: "https://www.cnblogs.com/codedecision/p/1179
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P1288" 首先,如果你的一边的边是 $0$ ,那么你肯定走另一边。 那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的话队首再走回来并去掉所有的值那么你就输了。 因为大家都绝对聪明,所以会选择将走过的边全部取完。 那
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P4860" 和《P4018 Roy&October之取石子》一样的推导思路,去找循环节。 可以发现:只要不能被4整除就是必胜态,只要能被4整除就是必败态。 实现代码如下:
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P4018" 首先碰到这道题目还是没有思路,于是寻思还是枚举找一找规律。 然后写了一下代码: 然后来证明: 首先我们知道,所有 $6^k$(其中 $k$ 为任意自然数)都不会是 $p^k$ (其中 $p$ 是素数)。 然后我们
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P4136" _找规律_ 首先这道题目我没有什么思路,所以一开始想到的是通过搜索来枚举 $n$ 比较小的时候的情况。 所以我开搜索枚举了 $n \le 8$ 的所有情况。 搜索代码: 然后证明转自 "Shallowy大神的博客
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P1488" 其实这道题目我只需要 $n$ 以及黑色三角形的三个端点编号就可以了。 我们假设在一个 $n$ 边形中,黑色三角形的端点号分别是 $a_0, a_1, a_2$ ,且 $a_0 \lt a_1 \lt a_2$ ,
阅读全文
摘要:题目描述: "https://www.cnblogs.com/problems/p/11789930.html" 题目链接: "http://codedecision.com/problem/1113" 这道题目涉及的一个知识点是它最多有 $n = 10^5$ 种颜色,而我们需要每种颜色动态去建树。
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P2486" 首先这是一道树链剖分+线段树的题。 线段树部分和 "codedecision P1112 区间连续段" 一模一样,所以我们在做这道题目之前最好去做一下这道题目的练习。 然后就是树链剖分的部分。 此部分支持两种操作
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P3150" 这道题目是博弈论的入门题。 我们以 __必胜态__ 和 __必败态__ 来讲解这个问题。 首先,下面的图片演示了前8个数的必胜态和必败态: 可以发现: 当 $m=1,3,5,7$ 的时候都是必败态; 当 $m=2
阅读全文
摘要:题目描述: "https://www.cnblogs.com/problems/p/P1112.html" 题目链接: "http://codedecision.com/problem/1112" 线段树区间操作,每一个线段对应的点包含三个信息: $l$:表示这个区间最左边的点的数值; $r$:表示
阅读全文
摘要:题目链接: "https://codeforces.com/contest/1245/problem/D" 题目大意: 平面上有n座城市,第i座城市的坐标是 $x[i], y[i]$ , 你现在要给n城市供电,对于第i座城市,你可以选择两种方式给其供电: 建造一个发电站供电,这需要花费 $c[i]$
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P3366" 最小生成树模板题。 Kruskal算法 算法思想:给边按边权从小到大排序,然后遍历每一条边,如果边上的两个点不在同一个集合,则选择这条边,并将两个点所在集合合并。直到选择了 $n 1$ 条边。 实现代码如下:
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P2672" 这道题目是贪心,贪心的思想是: 选择 $m$ 户人家的最大疲劳值应该是以下两种方案中的较大值: 方案一:选择 $a[i]$ 最大的 $m$ 户人家; 方案二:选择 $a[i]$ 最大的 $m 1$ 户人家,以及剩
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P5022" 这道题目一开始看的时候没有思路,但是看到数据范围里面有一个: $m = n 1$ 或 $m = n$ ,一下子有了思路。 当 $m = n 1$ 时,这就是一棵树,以1为根节点进行搜索,每次优先访问编号小的点即可
阅读全文
摘要:题目链接: "https://www.luogu.org/problem/P5020" 这道题目是一道模拟题,但是又有一点多重背包的思想在里面。 首先我们定义一个 来表示和为 的情况在之前有没有出现过, 一开始当然所有的 (除了 )都为 ,只有 为 , 然后对于每一个 来说,我们从 到 (最大值)去
阅读全文
摘要:题目链接: "https://www.luogu.org/problemnew/show/P5019" 这道题目是一道模拟题,但是它有一点贪心的思想。 我们假设当前最大的深度是 $d$ ,那么我们需要把所有深度为d的坑全都填成深度为 $d 1$ ,然后去填深度为 $d 1$ 的坑…… 实现代码如下(
阅读全文
浙公网安备 33010602011771号