
【算法】深度优先搜索
文章平均质量分 89
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ1565】【NOI2009】植物大战僵尸
【题目链接】点击打开链接【思路要点】题目中的限制可以总结为“若选取A,则必须选取B”,考虑最大权闭合子图问题。但是我们从样例中发现原图是可能存在环的,而最大权闭合子图问题要求原图是一个有向无环图。进一步分析发现,环上的元素是必然不能选取的,进而连向不能选的元素的元素同样不能选。进行一次DFS,确定每个元素是否可选,在可选的元素中建图,解最大权闭合子图原创 2018-01-15 09:01:59 · 436 阅读 · 0 评论 -
【省内训练2019-06-29】Words
【思路要点】我们本质上需要对每一对字符串 Si,SjS_i,S_jSi,Sj ,计算 F(Si,Sj)F(S_i,S_j)F(Si,Sj) 表示最大的 LLL 使得 SiS_iSi 的长度为 LLL 的后缀等于 SjS_jSj 长度为 LLL 的前缀。建立多串后缀树,对于每一个代表完整的串 SjS_jSj 的节点 xxx, F(Si,Sj)F(S_i,S_j)F(Si,Sj...原创 2019-06-29 14:55:57 · 436 阅读 · 0 评论 -
【LOJ3049】「十二省联考 2019」字符串问题
【题目链接】点击打开链接【思路要点】直接在后缀树上建边跑最长路就行了。时间复杂度 O(NaLog∣S∣+NbLog∣S∣+∣S∣Log∣S∣+M)O(N_aLog|S|+N_bLog|S|+|S|Log|S|+M)O(NaLog∣S∣+NbLog∣S∣+∣S∣Log∣S∣+M) 。【代码】#include<bits/stdc++.h>const in...原创 2019-06-17 20:44:42 · 333 阅读 · 0 评论 -
【LOJ6404】「ICPC World Finals 2018」逗号播撒机
【题目链接】点击打开链接【思路要点】将每一种单词的前,后方抽象为一个点,相邻的位置中间连边,搜索所有联通块即可。时间复杂度 O(NLogN)O(NLogN)O(NLogN) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1e6 + 5;typedef long lon...原创 2019-03-19 12:16:52 · 281 阅读 · 0 评论 -
【校内训练2019-03-21】C
【思路要点】不妨令 111 号节点为根节点。考虑找到树上的一个叶子结点,删除之,重复该过程,直到只剩下 111 号节点,得到删除序列 aia_iai 。询问一个包含 111 号点的集合 SSS 和一个点 xxx 可以确定 SSS 中是否存在 xxx 的后代,因此我们可以在 Log2N+1Log_2N+1Log2N+1 次操作内找到一个点 xxx 尚未被删除的后代,或确定点 xxx 是...原创 2019-03-22 13:52:05 · 262 阅读 · 0 评论 -
【CodeChef】Adjacent Leaves
【题目链接】点击打开链接【思路要点】首先考虑一种 O(N)O(N)O(N) 处理一个询问的方法,我们以 RRR 为根,进行 dfsdfsdfs 。我们称一个存在关键叶子的子树为“满的”,当且仅当该子树中叶子结点的数量等于关键叶子的数量,称一个子树为“不满的”,当且仅当该子树中存在关键叶子,并且它不是满的。若一个点 xxx 存在三个或以上不满的子树,那么显然我们不可能将其安排至...原创 2018-12-09 13:17:47 · 341 阅读 · 0 评论 -
【CodeForces】CodeForces Round #403 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Andryusha and Colored Balloons【思路要点】 显然答案有下界:Max{di+1}Max{di+1}Max\{d_i+1\},其中didid_i为点iii的度数。 我们用构造的方式来说明这个下界是可以取到的。 将度数最大的点作为根...原创 2018-08-07 20:51:15 · 425 阅读 · 0 评论 -
【AtCoder】AtCoder Regular Contest 092 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【C】2D Plane 2N Points【思路要点】按照纵坐标从小到大的顺序来考虑每一个点。若当前点为红点,那么将其横坐标加入当前可用的红点的横坐标集合。若当前点为蓝点,令其与当前可用的红点集合中横坐标恰小于当前点横坐标的红点匹配,并将该红点标记为不可用,若不存在这样的红点,则放弃该蓝点的匹配。用std::set维护当前可用的红点的横坐标集合,时间...原创 2018-06-14 20:51:54 · 402 阅读 · 0 评论 -
【BZOJ4401】块的计数
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005template <typename T> void read(T &x) { x = 0; int f = 1; char c = getchar(); for (;...原创 2018-05-31 13:46:44 · 214 阅读 · 0 评论 -
【CodeForces】CodeForces Round #485 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Infinity Gauntlet【思路要点】按照题意模拟即可。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> voi...原创 2018-06-05 15:43:52 · 659 阅读 · 0 评论 -
【BZOJ5315】【JSOI2018】防御网络
【题目链接】点击打开链接【思路要点】将边分为两种,一种是树上的边,一种是环上的边。树上的边有贡献,当且仅当其两侧均有点被选取,简单统计即可。环上的边有贡献,当且仅当其所在的环上相邻两个子树内被选取了一些点的点之间的区间不是环上最长的,同一个环上的边的贡献可以通过DP解决,时间复杂度\(O(N^3)\)。总时间复杂度\(O(N^3)\)。【代码】#include<bits/stdc++.h&g...原创 2018-05-24 14:34:48 · 475 阅读 · 0 评论 -
【BZOJ3242】【UOJ126】【NOI2013】快餐店
【题目链接】BZOJUOJ【思路要点】DFS找到环,简单DP一遍,得出每个点的子树的深度\(Depth_i\)。首先考虑在环上建快餐店。将环上的每个点投射到其在环上与其相对的位置,建立一个虚点。将环上点和虚点按照位置排序,并倍长。枚举快餐店建立在哪两个点之间,那么这两个点对应的虚点逆时针方向的点到快餐店的最远距离应当为\(max\{Depth_i+pos_{restaurant}-pos_i\}\...原创 2018-05-25 19:58:27 · 279 阅读 · 0 评论 -
【CodeForces】CodeForces Round #475 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Splits【思路要点】由于我们希望得到尽可能不同的权值,我们可以考虑在拆分的开头放置若干个2,然后放1填补剩余的数字。不难发现答案等于\(\lfloor\frac{N}{2}\rfloor+1\)。时间复杂度\(O(1)\)。【代码】#include<bits/stdc++.h>using namespa...原创 2018-04-28 20:39:40 · 497 阅读 · 0 评论 -
【CodeForces】CodeForces Round #483 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Game【思路要点】排序,取中位数为答案。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void chkmax(T ...原创 2018-05-17 14:30:35 · 342 阅读 · 0 评论 -
【BZOJ4719】【NOIP2016】天天爱跑步
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 300005#define MAXV 600005#define MAXLOG 20template <typename T> void read(T &x) { x = 0; in...原创 2018-04-22 16:30:08 · 190 阅读 · 0 评论 -
【BZOJ2115】【WC2011】Xor
【题目链接】点击打开链接【思路要点】任取一条1到\(N\)的路径,考虑一个与其相交的环,显然,我们可以半路“绕”一次这个环,使路径的权值Xor上环的权值。这启发我们问题很可能与线性基有关。再考虑一个不与其相交的环,由于图的联通性,我们可以走出路径“绕”一次这个环,再原路返回,多走的路被走了两次,Xor和为0。因此,路径的权值同样Xor上了环的权值。所原创 2018-01-17 10:31:04 · 370 阅读 · 1 评论 -
【AtCoder】AtCoder Grand Contest 035 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 XOR Circle【思路要点】题目给出的要求等价于相邻的三个数异或和为 000 。特判全部 aia_iai 均为 000 的情况,这种情况是有解的。否则,如果确定 1,21,21,2 号位置为 a,ba,ba,b ,则 333 号位置一定为 a⊕ba\oplus ba⊕b , 444 号位置一定为 aa...原创 2019-08-04 18:25:14 · 547 阅读 · 2 评论