上一页 1 ··· 114 115 116 117 118 119 120 121 122 ··· 182 下一页
摘要: 简单题View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define maxn 1005int n;long long sum, f[maxn], f1[maxn];int main(){ //freopen("t.txt", "r", stdin); whi 阅读全文
posted @ 2011-07-07 21:31 undefined2024 阅读(405) 评论(0) 推荐(0)
摘要: 简单题View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 50int n;char st[maxn];char match[1000];bool p, m;bool isp(){ for (int i = 0; i < n / 2; i++) if (st[i] != st[n - i - 1]) return false; return true;}bool is 阅读全文
posted @ 2011-07-07 13:39 undefined2024 阅读(177) 评论(0) 推荐(0)
摘要: 简单题View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 1005int f[maxn], g[maxn], n;void input(){ for (int i = 0; i < n; i++) scanf("%d", &f[i]);}void work(){ int ans = 0; while (1) { ans++; for (i 阅读全文
posted @ 2011-07-07 13:17 undefined2024 阅读(178) 评论(0) 推荐(0)
摘要: 题意:求最少添加多少条边可变无桥的连通图。分析:接着poj3352的看。对于这种题,我们正常的做法是求桥,删桥,求连通分支,缩点,构建新图,求叶子数。我们有一种简便方法。需要对tarjan算法做一些变化。我们之前规定low[u]是其子孙通过一条返祖边直接到达的点,把这个改成是其子孙可以连续通过多条返祖边所能到达的点。那么low[u]=min(low[v],dfn[u]);这样做的缺陷是,不能求割点了,多次返祖会导致求割点的错误,在多环两两以单个点相连排成一条线,且每两个连接点间只有一条边的情况中,那些连接点本应是割点,但是在dfs过程中,这些连接点之间的边又恰好不是树枝边的话,low[u]可能 阅读全文
posted @ 2011-07-06 20:10 undefined2024 阅读(1827) 评论(3) 推荐(0)
摘要: 题意:本题要求的就是添加多少条边可变无桥的连通图。分析:双连通分支双连通分支分就是一个极大化(一个点只要加进来之后该分支仍然是双连通分支就加进来)的分支,去掉任意一条边这个分支内部仍然连通。也可以理解为去掉桥之后,每个连通分支就是原图的双连通分支。注意:北大培训中说有两种双连通(边的和点的),其实只有边的双连通才是双连通的正规定义。所以我们不对点的双连通进行讨论。求割点和桥可以用tarjan算法,对图进行dfs,记录每个点的第一次到达时间dfn[i]。并记录一个low[i]表示该点及其子孙结点所能到达的dfn最小的点。这个到达并不是普通意义的到达,而是在遍历过程中,通过非树枝边(一定是返祖边, 阅读全文
posted @ 2011-07-06 19:53 undefined2024 阅读(1269) 评论(0) 推荐(0)
上一页 1 ··· 114 115 116 117 118 119 120 121 122 ··· 182 下一页