12 2017 档案
摘要:Fire (poj 2152 树形dp) 给定一棵n个结点的树(1d[i]$时,$f[i][j]=\infty$。它的思想就是如果i依赖j,就直接让子树中依赖j的点都减去依赖,从而消除影响。 (傻逼了,用rmq求树上两点距离) c++ include include include using na
阅读全文
摘要:小a和uim之大逃离(luogu P1373 dp) 给你一个n m的矩阵,其中元素的值在1~k内。限制只能往下和往右走,问从任意点出发,到任意点结束,且经过了偶数个元素的合法路径有多少个。在此题中,定义在一条路径中,第奇数个元素之和为X,第偶数个元素之和为Y。X+Y同模k+1的路径是合法路径。答案
阅读全文
摘要:引水入城(性质题) 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形。每座城市都有一个海拔高度。为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施。水利设施有两种,分别为蓄水厂和输水站。蓄水厂的功能是利用水泵将湖
阅读全文
摘要:小木棍(暴搜) 一个人有一堆一样长的木棍,现在他把它们随便切,切出来n个小木棍(n include include include using namespace std; const int maxn=100; int m, n, a[maxn], sum, ans; int visit[maxn
阅读全文
摘要:poj 3417 Network(tarjan lca) 先给出一棵无根树,然后下面再给出m条边,把这m条边连上,然后每次你能毁掉两条边,规定一条是树边,一条是新边,问有多少种方案能使树断裂。 我们设添加了一条新边后,树形成了一个环,表示为x y lca(x,y),我们将其中的边都覆盖一次。添加了多
阅读全文
摘要:poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边。问字符串环的平均最小值是多少。1 ≤ n ≤ 100000,有多组数据。 首先根据套路,二分是显然的。然后跑一下spfa判断正环就行了。 然而我被no solution坑了十次提交
阅读全文
摘要:spfa判断负环 给出T组数据,其中有一个n点m边的图,问每个数据是否存在负环。N,M,|w|≤200 000。 spfa如何判断负环呢?只要枚举每一个点,然后dfs/bfs更新即可,具体看代码。 它的基本思想是:如果找到一个点x,能更新自己,那么就存在负环。然而有这样一种情况:由于$dis+v 在
阅读全文
摘要:poj1144 tarjan求割点 额,算法没什么好说的,只是这道题的读入非常恶心。 注意, 当前点x是否是割点,与low[x]无关,只和low[son]和dfn[x]有关 。 还有,默代码的时候记住分目标点是父亲还是孩子两种情况讨论。 c++ include include include inc
阅读全文
摘要:floyd判环算法(龟兔赛跑算法) 注意,这个算法是用来判断一条链+一条环的图,环的长度或者环与链的交界处的,所以此floyd非彼floyd(虽然都是一个人想出来的)。 (图不是我的) 如果只要求环的长度的话,只要让h和t相遇,然后再让h跑一圈,同时计算出步数就行了。 如果要算出链和环的交界点呢?首
阅读全文
摘要:我是按照 "这里" 的思路来的。这个博文只是感性理解。 递归树 关于递归树, "这" 篇博文讲的很好,我只是给自己总结一下。 定义vis数组,在dfs连通图时赋予它们不同的含义: 1. vis=0,表示这个点没有被访问。 2. vis=1,表示这个点被访问了,但是它的孩子还没有访问完。 3. vis
阅读全文
摘要:这个文章的思路是按照 "这里" 来的。这里讨论的都是无向图。应该有向图也差不多。 1.如何求割点 首先来看求割点。割点必须满足去掉其以后,图被分割。tarjan算法考虑了两个: 根节点如果有两颗及以上子树,它就是割点。因为它没有父亲了(可怜的点)。 对于有父亲的普通的结点a,如果它递归树的子树中,有
阅读全文
摘要:POJ 3660 Cow Contest (传递闭包) 有n头牛比赛,m种比赛结果,把这些比赛结果告诉你(就是谁打败了谁的形式),最后问你一共有多少头牛的排名被确定了。n using namespace std; const int maxn=105, maxm=4505; int n, m, an
阅读全文

浙公网安备 33010602011771号