摘要: 题目链接:https://www.luogu.com.cn/problem/AT_abc343_g solution: 1.首先我们将给出的字符串中互相包含的消去,可以使用kmp求前后缀来完成。和这道题的写法一样https://www.luogu.com.cn/problem/CF1200E 2.我 阅读全文
posted @ 2024-04-24 16:14 Captainfly19 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.luogu.com.cn/problem/CF911F solution:先求得树的直径,再求得在树的直径上的节点和不在树的直径上的节点。我们考虑优先删除不在直径上的节点,这样不会破坏树的直径,在删完了这些点之后再慢慢删直径上的点。 #include<bits/st 阅读全文
posted @ 2024-04-24 16:00 Captainfly19 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 链接:https://www.luogu.com.cn/problem/P4320 圆方树基础题 实际上就是问给定起点和终点的一条路径上的割点数量。那么建立好圆方树以后,割点的相邻两个点一定是方点,圆点到圆点之间的距离一定是偶数,于是可以知道一条路径中的割点数量= 路径总长度/2 向下取整。那么这道 阅读全文
posted @ 2024-04-22 16:54 Captainfly19 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 链接:https://atcoder.jp/contests/abc350/tasks/abc350_g 大致题意:给出n个点,q个询问 1号询问 要求u,v之前加一条无向边 图始终是一个森林 2号询问 询问是否有一个点与u,v都相邻,若有则输出该点,若无则输出0。 询问强制在线。 思路:在题目要求 阅读全文
posted @ 2024-04-21 22:25 Captainfly19 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 链接:https://www.luogu.com.cn/problem/AT_abc232_g 暴力的做法肯定不行,这道题要用到一个比较经典的拆点操作:把一个点拆成内点和外点。在接下来的分析中会慢慢介绍。 由于题目每次连的边都是单向边,那要考虑的问题是:比如说现在要从1走到3,怎么走才能与暴力建边等 阅读全文
posted @ 2024-04-19 17:55 Captainfly19 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.luogu.com.cn/problem/P4289 状压+bfs 将初始状态和目标状态都保存下来,然后对于每个有棋子的位置 直接上下左右bfs即可。 2024.4.30 upd :代码添加了注释 const int maxn = 2e5+10; queue<int 阅读全文
posted @ 2024-04-18 10:43 Captainfly19 阅读(5) 评论(0) 推荐(0) 编辑
摘要: P4071 [SDOI2016] 排列计数 :https://www.luogu.com.cn/problem/P4071 思路:题目要求序列中m个数下标等于自身,其余n-m个数满足错排。那么每次在n个位置中选出m个 a[i]=i 的位置,之后我们再用错排公式求出n-m的错排,最后用乘法原理即可。 阅读全文
posted @ 2024-04-17 20:07 Captainfly19 阅读(5) 评论(0) 推荐(0) 编辑
摘要: Prufer序列通常在图的计数问题中比较常用。 Prufer序列的构造方法:(图片源自oiwiki) 具体操作步骤:先找到叶子结点中编号最小的节点,然后删除。在Prufer序列中的元素就是每次删除的节点的父节点。由于最后操作必然会剩下两个节点,两个节点都是叶子结点,于是操作完毕,最终构造出的Pruf 阅读全文
posted @ 2024-04-17 16:41 Captainfly19 阅读(2) 评论(0) 推荐(0) 编辑