
DFS
文章平均质量分 73
TA201314
这个作者很懒,什么都没留下…
展开
-
[SHOI2014]神奇化合物解题报告
做题的时候一上来就把时间复杂度算错了。。DFS的时间复杂度是O(n+m),我竟然给算成O(n)了!想过来以后还是比较简单的,观察到m很大但q很小,所以可以将图删成树以得到O(q(n+q))的时间复杂度,至于UFS什么的,用不用都行。#includeusing namespace std;#include#include#include#includechar * ptr=(ch原创 2014-11-26 20:07:25 · 867 阅读 · 0 评论 -
刺杀大使 解题报告
这道题应该说是非常好的一道题,题意大致是在一个矩阵中寻找一条从最下面一行到最上面一行经过最大的数最小的一条路。时限是2s。看到这题第一直觉DP,但发现DP方程可以互相转移,于是DP变成了图论。。于是改成了Dijkstra,算一算时间复杂度O(mnlog(mn))≈8*10^7,正好2s差不多;就写开了。#includeusing namespace std;#include#incl原创 2015-01-03 13:52:48 · 1252 阅读 · 0 评论 -
[BestCoder Round #25 1003]Harry and Christmas tree
Harry and Christmas treeTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 70 Accepted Submission(s): 3问题描述圣诞节的夜晚,哈利得到一棵圣诞树。这棵原创 2015-01-05 19:22:54 · 1000 阅读 · 0 评论 -
[NOIP2014]子矩阵解题报告
这题看上去没啥思路,一看数据范围小的可怜,就算了下暴搜的时间复杂度O(C(16,8)∗(C(16,8)+m3))≈108O(C(16,8)*(C(16,8)+m^3))≈10^8似乎没啥问题,然后就写了个暴搜,出了点数据发现T了,又加了个剪枝然后就A了。。 结果一看人家的代码全是DP。。让我有点蛋疼。 其实只要把暴搜的后半部分一改就可以了,把二维压成一维后,就有一个显然的DP方程:处理出选一列的原创 2015-04-18 10:37:27 · 4941 阅读 · 0 评论 -
[UVA10181]十五数码解题报告
对于有解的情况,只需ID-A*即可。 首先谈一谈估价函数,估价函数表示的应该是对期望步数的下界。我一开始想的是用所有数现在的位置到应该在的位置的曼哈顿距离和,考虑到一次交换最多令其减少2,所以还要把它除以2。后来看了题解发现所有题解都是用的所有非0数的现在的位置到目标位置的曼哈顿距离和,这样的话一次交换最多令其减少1,这样应该是比较合适的。。 我一开始写的A*,(因为没有看懂ID原创 2015-05-05 21:44:18 · 3391 阅读 · 0 评论 -
[UVA10270]拼接正方形解题报告
这个题做了我好久。。想了好多奇葩剪枝。 我的想法是从第一行开始一行一行往下填。 一个比较简单的剪枝是处理出当前剩余面积的最小代价,如果加上最小代价都大于等于当前最优解了,那么就直接减掉就好了。它是可以DP出来的,显然f[i]=minf[i−j2]+1.(j2≤i)f[i]=min{f[i-j^2]}+1.(j^2 \le i)f[0]=0f[0]=0 但是它与实际情况相原创 2015-05-22 20:14:14 · 1127 阅读 · 0 评论 -
[CEOI1997]参观洞穴 解题报告
这道题挺有意思的,难点主要在建模。“对于每个房间来说,我们都能找到一条通往任意一个其他房间的只经过内通道的路线,但是如果我们规定每个内通道只能走一次的话,这样的路线是惟一的。” 也就是说,在删掉外通道以后,所有节点形成了一棵树。 但是我比较傻逼。。我只想到了内节点形成了一棵树(而且是二叉树,但是我不知道这有什么用),所以我以为就是用k条带权树上路径去不重不漏地覆盖整棵树,于是就写了一个O(n^2原创 2015-07-04 11:19:10 · 1300 阅读 · 0 评论 -
Huffman编码学习笔记
主要是在学算导,觉得算导译到中国真是中国人民的福音。 一、编码 编码就是选择有意义的01串,令其首尾相接组成文本。我们并非可以随便挑选01串,原因在于它们是首尾相接的,这为我们识别造成了一些困难。比如说我们不能在文本000000中分清字符00与000. 一般我们使用的方式是定长字符;但更好的方式是前缀码,算导中写道”虽然我们这里不会证明,但与任何字符编码相比,前缀码确实可以保证达到最优数据压缩原创 2015-07-24 20:31:02 · 1996 阅读 · 1 评论 -
[pa2015]Fibonacci 解题报告
考虑斐波那契数列模n的循环节,设其长度为L(n)。(这个东西有个学名叫the Pisano period) 显然,若n=pq((p,q)=1),则L(n)=lcm(L(p),L(q))。所以我们就可以将n分解成若干pkp^k的乘积考虑。 对于L(pk)L(p^k)(p是质数,k>1),有一个猜想:L(pk)=L(p)pk−1L(p^k)=L(p)p^{k-1}。(参考资料,据说是一个叫D·D·W原创 2016-04-19 09:17:34 · 1032 阅读 · 0 评论 -
[bzoj2861] 双向边定向为单向边 解题报告
这题搞了好久。。首先一条双向边(u,v)可以变成单向边的条件是存在一个经过这条边的环,只需要按这个环的方向把这个环上的所有双向边变成单向就可以了,如果这个环上都是双向边,就随便定一个方向就可以了。所以我们考虑将双向边拆成两条单向边dfs,这样树边至少存在一个向下的方向,但也有可能是向下的单向边。 但是考虑非树边的时候首先注意到一件事情,就是两条非树边之间可能互相影响,就是说一条非树边可能不能与树边原创 2016-09-11 20:28:53 · 1477 阅读 · 0 评论 -
[Scoi2010]幸运数字解题报告
这题坑了我好久。。虽然很早就想到容斥,但还是各种错:①我误以为一共有1024个幸运数字,实际上应该是2055个。。排列组合没有考虑清楚!②没有想到爆long long的问题,10^10*10^10实际上确实是会爆long long的!需要在判断的时候用double。③广搜要比深搜很多的。。没有必要的话还是写深搜吧!④剪枝啊!如果一个幸运数字可以被另一个幸运数字整除,还要它干啥用原创 2015-02-07 10:38:03 · 1729 阅读 · 0 评论 -
纵横填字游戏解题报告
题意描述:【问题描述】 这个题目要求你编写一个程序来解决一个纵横填字游戏。 这个游戏比我们在报纸上见到的通常的填字游戏要简单。游戏仅给出单词的起始位置,方面(横向或纵向)以及单词的长度。只要单词的长度正好,游戏中能填入任何一个来自词典的单词。 在游戏中单词相交处的字母必须相同,当然,任何单词只准使用一次。 思考一下以下这个游戏。原创 2014-12-10 21:19:08 · 3184 阅读 · 0 评论 -
POJ1417解题报告
题意:给出n对人之间的朋友和敌人关系,已知它们一共是两波人,人数分别为p1、p2,问是否存在合理方案?若存在,输出方案。多case问题,以n=0,p1=0,p2=0为结束。 分析:先并查集做出若干对集合,然后暴搜方案。。 解题过程:WA | ①n\p1\p2均为0应为!(n||p1||p2)而不原创 2014-11-05 16:32:56 · 1114 阅读 · 0 评论 -
最优贸易解题报告
----------------------------最优贸易是一个n=10^5级的稀疏图,求max{0,w[j]-w[i]}(g[1][i]&&g[i][j]&&g[j][n]).----------------------------一、SPFA的功能与理解,不能仅仅局限于求最短路,而可以是图中某点到图中所有点的某种关系。比如说本题中可以用来求某点到1的所有路径中的Wmax。二、DF原创 2014-11-05 16:18:03 · 2018 阅读 · 0 评论 -
虫食算解题报告
一、顺序:逆序比顺序要快得多。二、剪枝: 每一步都判断当前为字母所配的值是否符合全部方程。 这看起来好像是会很慢,每一次都要花O(n)的时间扫,但出奇的,却会收到非常好的效果。可以减掉大量废纸。代码: #include using namespace std;#include#include#include#inc原创 2014-11-05 16:36:04 · 1365 阅读 · 0 评论 -
COGS水题赛总结
既然水题是水题赛,学到的东西就主要是来自代码风格上的了。①复制数组要用memcpy,循环是较慢的。②跳马那道题我竟然还判断了一下其是否会越界,但实际上,越界是不可能发生的,以后这种边界情况我必须要仔细推敲才好。③最后一道题我还开了两个Bool数组来判断某个点是否是水及是否经过过,实际上这两个是完全可以合并的。 代码:分组:#includeusingnam原创 2014-11-05 16:47:44 · 1050 阅读 · 0 评论 -
遍历问题[CODEVS1029]解题报告
思路:当这棵树有两个子树时,ans=l[root]原创 2014-11-05 21:44:03 · 1302 阅读 · 0 评论 -
[CODEVS1225]埃及分数解题报告
主要思路:①迭代加深;②原创 2014-11-23 19:49:29 · 1116 阅读 · 1 评论 -
[Vijos1149]驾车旅游解题报告
这道题最关键的地方就是对除非汽车无法用油箱里的汽油达到下一个加油站或目的地,在油箱里还有不少于最大容量一半的汽油时,驾驶员从不在加油站停下来。这句话的翻译,我一开始想错了,真正清晰的等价叙述应为:驾驶员可以在油站停下来,当当前油箱里的汽油小于最大容量的二分之一或汽车无法用油箱里的汽油达到下一个加油站或目的地;驾驶员可以不在油站停下来,当汽车可以用当前油箱里的汽油达到下一个加油站或目的地。原创 2014-12-01 18:44:16 · 1087 阅读 · 0 评论 -
[COGS383]单向双轨道解题报告
①做这道题的时候没有认真思考,以为跟双栈排序一样然后就蛋疼了,蛋疼了好久才发现原来不一样!由于可以从栈A到栈B,所以在栈A中的元素是不一定有序的,而栈B中的元素才是一定有序的;我一开始误以为了二者均是有序的。②这道题显然应该是DFS-ID,我却一上来就写了个BFS,导致爆掉了。③DFS-ID的上限3*N才是比较合适的,因为其实这个题26好像是搜不了的。。所以用26*3的话。。呵呵。#i原创 2014-12-01 20:55:02 · 1316 阅读 · 0 评论 -
USACO4.1.2Fence Rails栅栏的木料解题报告
描述:农民John准备建一个栅栏来围住他的牧场。他已经确定了栅栏的形状,但是他在木料方面有些问题。当地的杂货储存商扔给John一些木板,而John必须从这些木板中找出尽可能多所需的木料。当然,John可以切木板。因此,一个9英尺的木板可以切成一个5英尺和一个4英尺的木料 (当然也能切成3个3英尺的,等等)。John有一把(完美的)梦之锯,因此他在切木料时,不会有木料的损失。原创 2014-11-19 20:26:28 · 2996 阅读 · 2 评论 -
[51nod]矩阵中不重复的元素
如果我们将每个数a分解质因式:a=∏∞i=1pkiia=\prod_{i=1}^{\infty}p_i^{k_i},那么任意一个数a都可以看作一个无穷维的向量(k1,k2,...)(k_1,k_2,...),其中第i维的系数表示从小到大第i个质数在a中的指数。这样的话aba^b就可以看作是向量的数乘,所以如果有ab11=ab22a_1^{b_1}=a_2^{b_2},就必然有a1,a2a_1,a_2原创 2016-11-07 20:45:05 · 1620 阅读 · 0 评论