![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dfs
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj2938[Poi2000]病毒 AC自动机+dfs
这题其实和之前考的那个无限链一样,而且还是简化版本,,直接建AC自动机然后在trie上dfs,找一个环而且经过的点不为结束点就好了,然而智障的我居然忘记了怎么写AC自动机。。明明那个时候理解的很透彻的说。。看来不复习的话什么东西都会忘记啊。。唉。。#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #de原创 2017-05-04 17:15:15 · 278 阅读 · 0 评论 -
bzoj2582[Usaco2012Jan]Bovine Alliance
题意明显。 一开始不带脑子看题,写了个最大匹配方案数直接交上去了。。也没测样例,WA了一发。。 然后才认真看了看题目,发现是道思考题目。。 然后就萎了,没想出来,可能是没认真想,感觉结论挺显然的。。 就是,假设我们分出来的一部分的边数位E,点数为V。 为了保证每个边都属于一个点,E<=V。 所以根据题意现在只有可能两种情况。。一.E=V 在这种情况下,肯定知道当前这一组有个环,那么我们原创 2017-05-28 11:43:22 · 424 阅读 · 0 评论 -
bzoj3990 [SDOI2015]排序 dfs
考试遇见这种题目只能傻眼。。 题目大意:给定一个长度为2^n的排列,有n个操作,第i个操作为【将序列分成2^(n-i+1)段,每段长2^(i-1),然后任选两段交换】,每个操作最多用一次,求有多少操作序列能把序列排出来 (orz popoqqq)orz hzwer: 我们可以发现一个操作序列如果改换顺序,结果不变,所以我们只要找到一种以后把答案加上这个操作序列的阶乘就好了。 我们从小到大DF原创 2017-07-24 22:23:45 · 269 阅读 · 0 评论 -
bzoj3522 [Poi2014]Hotel dfs(DP)
其实这题勉强可以算是个DP= = 一开始想的是设f[i][j]表示以i为根,距离为j的答案,然后发现转移好像很复杂,写出来了但是MLE= =。。懒得开滚动了。 然后发现其实并不用这么复杂= = %题解: 首先可以发现,满足条件的点对一定是“有一个中心点,三个点到中心点的距离相等,且三个点分别在不同子树中”这种情况。 那么枚举中心点,然后遍历子树,统计答案。 cnt[i]为临时数组,表示当原创 2017-07-25 08:59:24 · 312 阅读 · 0 评论 -
codeforces 858F&&JZOJ5404graph dfs
题意:给定一张n个点m条边的无向图,每条边连接两个顶点,保证无重边自环,不保证连通 你想在这张图上进行若干次旅游,每次旅游可以任选一个点x作为起点,再走到一个与x 直接有边相连的点y,再走到一个与y 直接有边相连的点z 并结束本次旅游 作为一个旅游爱好者,你不希望经过任意一条边超过一次,注意一条边不能即正向走一次又反向走一次,注意点可以经过多次,在满足此条件下,你希望进行尽可能多次的旅游,请计算原创 2017-10-11 18:09:29 · 333 阅读 · 0 评论 -
bzoj4401块的计数 dfs
题意:把一棵树分成几块,要求方案数,每个块内是一个联通块。 啊明显,只有那些x|n的数可能成为答案。 然后对于x进行判断,自己画图想想就能发现,只有x|sz[i]的sz[i]个数=n/x,即分成n/x块,每块x个数,才可行,大概解释一下就是,如果x|sz[i],那么这个以i为根的子树肯定能分成sz[i]/x个块。 然后搞个桶来统计,每次不需要遍历所有sz,只需要在桶内log计算就可以了,这是一原创 2017-10-20 22:33:11 · 146 阅读 · 0 评论 -
bzoj2208 [Jsoi2010]连通数 dfs
题意:求每个点出发能经过的点数,n<=2000。 这明显签到题吧喂,签到都太水了啊= =。跑的贼慢我好虚。结果还是过了。#include<cstdio> #include<algorithm> #include<cstring> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) using原创 2017-10-13 20:37:48 · 199 阅读 · 0 评论