上一页 1 2 3 4 5 6 7 8 ··· 19 下一页
摘要: 题意:给你一个连通图,问你最多加多少条边,还能保证该图不是强连通图。对整个图求强连通分量,然后对图缩点,记录一下缩点之后每隔点包含的原来的点的个数,找出最少的那个点,然后对这个点建成完全图,对另外的所有点建成完全图。然后+两个点建边-所有原来的遍就好了。链接:http://acm.hdu.edu.cn/showproblem.php?pid=4635 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std; 10 c... 阅读全文
posted @ 2013-08-03 10:54 某某。 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个字符串和m个询问,问你l,r这个区间内出现过多少字串。连接:http://acm.hdu.edu.cn/showproblem.php?pid=4622网上也有用后缀数组搞得、思路(虎哥):用字典树把每一个字符串对应成一个整数 相同的字符串对应到相同的整数上把所用的串对应的整数放在一个数组里 比如书字符串s[l...r]对应的整数是 k那么二维数组 [l][r] 就等于k假设一个对应好的二维数组左下角是原点3 4 5 22 3 4 01 6 0 02 0 0 0这样求解 从l到r的不同字符串的个数 其实就是求 从[l][r] 到右下角所在的矩阵所包含不同整数的个数(不包括0)这里 阅读全文
posted @ 2013-08-03 09:58 某某。 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个字符串,问你整个字符串有多少个回文字串。(可以不连续)状态方程 dp[i][j] = dp[i+1][j]+dp[i][j-1]+dp[i+1][j-1]+(a[i] == a[j]? 0:1;)对于长度为1 2 3 的时候特判一下就可以了。当然状态方程在些的时候会有改动,详细的还是看代码吧。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define loop(s,i,n) for(i = s;i 2)38 dp[i]... 阅读全文
posted @ 2013-08-02 14:28 某某。 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个长度小于等于16的字符串,每次可以删除一个回文传,问你最少删除干净的字数。状态+dpdp[i] = min(dp[i],dp[j]+dp[j^i]);(j是i的字串);连接:http://acm.hdu.edu.cn/showproblem.php?pid=4628代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define loop(s,i,n) for(i = s;i < n;i++) 9 10 using namespace std;11 i... 阅读全文
posted @ 2013-07-31 16:09 某某。 阅读(228) 评论(0) 推荐(0) 编辑
摘要: Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)(转载)转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2194090a96bbed2db1351de8.html基本概念:1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。3.点连通度:最小割点集合中的顶点数。4.割边(桥):删掉它之后,图必然会分裂为两个或两个以上的子图。5.割边集合:如 阅读全文
posted @ 2013-07-31 14:23 某某。 阅读(2361) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个连通图,然后再给你n个询问,每个询问给一个点u,v表示加上u,v之后又多少个桥。一个最容易想到的办法就是先加边找桥,加边找桥,这样可定超时。那么就可以缩点,因为如果一条边不是桥那么无论怎么加边他肯定都不会变成桥,这样我吧不是桥的点缩成一个点。这样全图就都是桥,这样的话,我们就在加的遍里面去找如果加的边是同一个点,那么,肯定不会减少桥,但是如果不是同一个,那么桥肯定减少~。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #defin... 阅读全文
posted @ 2013-07-31 14:21 某某。 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 题解:http://blog.csdn.net/lyy289065406/article/details/6756821讲的很详细我就不多说了。题目连接:http://poj.org/problem?id=2942代码(完全白书上的) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define loop(s,i,n) for(i = s;i g[maxn],bcc[maxn]; 15 struct edge 16 { 17 ... 阅读全文
posted @ 2013-07-30 18:50 某某。 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一棵二叉树,每个节点有一个w值,现在有一颗小球,值为x,从根节点往下掉,如果w==x,那么它就会停止;如果w>x,那么它往左、右儿子的概率都是1、2;如果w 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define cl(a,b) memset(a,b,sizeof(a)) 9 #define loop(s,i,n) for(i = s;i q[maxn]; 27 int ans[maxn][2]; 28 int cnt; 29 int lowbit(int x)... 阅读全文
posted @ 2013-07-30 09:45 某某。 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 链接:http://poj.org/problem?id=2186题意:给你N个点,然后在给你N条有向边,然后让你找出这样的点S,S满足条件图上任意一点都能到达S。要想满足任意一点都能到达,首先满足图连通,然后满足将图缩点后形成一个棵树,树的特征是可以有且只有一个点的出度为0。然后代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std; 10 const int maxn = 50050; 11 12 ... 阅读全文
posted @ 2013-07-29 21:39 某某。 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 题意就是找一个 左右上下对称的正方形矩阵。连接:http://acm.hdu.edu.cn/showproblem.php?pid=4618没想到记忆+dp和暴力就能水过。。。//记忆话搜索+dp#include #include #include #include using namespace std;int a[301][301];char dp[301][301][301];int n,m;int judge(int i,int j,int len){ int k; if(i+len-1 >= n) return 0; if(j+len-1 >= m) return ... 阅读全文
posted @ 2013-07-29 14:16 某某。 阅读(262) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 19 下一页