摘要: #字符串 ##双哈希 Birthday Cake 给n个字符串,问每个字符串前后缀相等时,中间的串与其他字符串相等的个数。 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> 阅读全文
posted @ 2020-07-31 16:00 shuitiangong 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 本文主要对从各个平台收集的资料做汇总,如有侵权请私信我。 #综合资料 1.ACM的正确入门方式是什么 2.Acm学习路线 3.算法竞赛资料分享 4.oi wiki 5.vj题单 #题单 1.kuangbin带你飞 2.HDU题目分类 3.POJ入门题目推荐 4.算法竞赛从入门到进阶 5.挑战程序设计 阅读全文
posted @ 2020-05-21 12:23 shuitiangong 阅读(1381) 评论(0) 推荐(1) 编辑
摘要: #A 签到 #B ##题目大意 粉刷一个n行m列矩形,每次只能粉刷相邻的没有走过的格子并且每刷一个格子都是合法的,一个合法的粉刷路径是指:对于任意两个被粉刷的格子来说,只走粉刷过的格子的最短路径与他们的曼哈顿距离相等。问你粉刷完所有格子有多少种方法。 ##解题思路 首先可以发现粉刷的图形不可能是凹的 阅读全文
posted @ 2022-01-09 22:12 shuitiangong 阅读(58) 评论(1) 推荐(1) 编辑
摘要: #A ##解题思路 突破点在二分答案上,如果想到二分的话后面就好做了。 假设我们二分答案的大小为x,判断是否可行,首先肯定需要在长度不小于2x的线段中找。考虑枚举竖线来找符合条件的横线,对于一条竖线${x_1, y_1, c_1}(x_1 \leq y_1)\(来说,需要判断是否存在一条横线\){x 阅读全文
posted @ 2022-01-05 14:00 shuitiangong 阅读(70) 评论(0) 推荐(0) 编辑
摘要: #B ##题目大意 给你两张扫雷图A和B,你最多对B修改$\lfloor \frac{MN}{2} \rfloor$次,问是否能让B中的数字之和等于A。 ##解题思路 扫雷图中的数字等价于相邻的非雷格子与空白格子的对数,相当于一张黑白色的图,很明显,黑白颜色是相对的,即是交换颜色,相邻的黑白颜色的对 阅读全文
posted @ 2022-01-03 13:47 shuitiangong 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给你一棵树,和一个序列,序列描述了在树上走的路径$(a_{i-1} → a_i)$,你可以给一条边染成红色或者蓝色, 问走过的红色边的条数-蓝色边的条数等于K的方案数。 #解题思路 先将式子转换一下,设sum表示所有边的经过次数,那么$R+B=sum, R-B=K$,可以得到$ 阅读全文
posted @ 2021-12-21 21:10 shuitiangong 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 有n个玩家,n是3的倍数,有k个冒名顶替者,保证$\frac{n}{3} < k < \frac{2n}{3}$,每次可以询问3个玩家中冒名顶替者的数量是否大于一半,最多询问n+6次,问冒名顶替者的数量和编号。 #解题思路 3个一组的询问,因为k的数量限制,必定至少有一组0和一 阅读全文
posted @ 2021-12-17 17:16 shuitiangong 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给你一个字符串,问你有多少子序列s,满足相同的字符都是连续出现的,当两个子序列中有一个字符的位置不同时两个子序列不同。 #解题思路 看到只有10种字符,并且n只有1000大概就能想到做法了。考虑dp,对于当前字符i,如果之前有一个以i结尾的合法子序列,那么在它后面加上i也是合法 阅读全文
posted @ 2021-12-06 21:23 shuitiangong 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #解题思路 前面的部分可以直接求,关键是如何快速求后半部分。 我们知道两个后缀之间的lcp即他们之间的height数组的最小值。由于题目是对不同的数对计数,我们可以把后缀按照rk重新排序,每次计算当前的后缀j与它前面的后缀i的lcp,不难发现从j到i的过程中对height取min,得到的最 阅读全文
posted @ 2021-11-24 16:58 shuitiangong 阅读(32) 评论(0) 推荐(0) 编辑
摘要: #C Cover Master ##题目描述 ##解题思路 我们把图中红色的区间称为关键点。可以发现树上每个关键点之间是没有祖先关系的,当两个关键点向上走到它们的lca的时候,会合并成一个点,并且向上合并的过程中,最左边的关键点和最右边的关键点一定会随之往上升。可以先用dfs把询问区间涉及的关键的点 阅读全文
posted @ 2021-11-03 20:09 shuitiangong 阅读(620) 评论(2) 推荐(0) 编辑
摘要: 题目链接 #解题思路 题目的问法很明显是虚树题的问法。根据询问点建虚树,因为虚树不止有询问的点,还有他们的lca,所以先对建出来的虚树预处理出来虚树上每个点离他最近的议事处的距离和点的编号(自己就是议事处肯定就是自己,主要是对增加的lca进行处理)。因为最近的点可能来自下面的点也可能是上面的点,所以 阅读全文
posted @ 2021-10-19 21:22 shuitiangong 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给你一棵以1为根的树,有三种操作: 1:把树的根改为v。 2:找到包含u和v的最小子树,给他们都加上x。 3:查询以v为根的子树的总和。 #解题思路 首先先考虑第3个操作,固定1号点为根,记录一下当前的根是哪个点,询问时,如果询问的是新根,就是整棵子树的值。如果询问的点v在当前 阅读全文
posted @ 2021-10-19 20:10 shuitiangong 阅读(33) 评论(0) 推荐(0) 编辑