上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 18 下一页
摘要: A,贪心题,思路是遇到1就翻转,看最后能不能把所有的反成0 B,找规律,不考虑黑白的话总共有ans = (n-7)*(m-7)种情况。如果ans是偶数,则正好有ans/2个。如果是奇数,则要根据右下角而定,右下角是0则有ans/2 + 1个,否则有ans/2个 C,数学题,Polla昨晚后给我讲的,分两种情况,设半径为r。一、w做圆柱体的高,此时r <= w/2 && 2*pi*r <= (h - 2*r) => r = min(w/2, h/(2*pi + 2)); 二,h那条边作为圆柱的高。2*pi*r <= w并且得到体积方程:F(r) = pi* 阅读全文
posted @ 2012-03-11 16:12 AC_Von 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 数据结构串poj1035,poj3080,poj1936排序poj2388,poj2299简单并查集的应用poj1611哈希表和二分查找等高效查找法poj3349,poj3274,POJ2151(DP),poj1840,poj2002,poj2503哈夫曼树 poj3253堆,优先队列poj2442, poj1442trie树poj2513, poj2418poj 1035分三种情况考虑。替换的话出入的字符串和dictionary只有一个不相同的。插入、删除的话比较与dictionary中相同的个数。poj 3080暴力过了,原来还有这么好用的strstr()函数。无语,我在那模拟了一... 阅读全文
posted @ 2012-03-10 11:15 AC_Von 阅读(1324) 评论(0) 推荐(0) 编辑
摘要: 昨晚正好赶上好时候,TC在8点到9点多有比赛。所以做了一下,发现没了IDE,我的编码习惯很有问题,最后调试1000pt时连括号都对不上号了。。。代码写的很乱,调试很费劲!这个坏毛病得改!折腾一晚上没做题,就给了20分,妹的!250pt:x不是0就是1,并且给出的系数ai也是不是0就是1。所以直接扫一遍就行。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <stack>#inc 阅读全文
posted @ 2012-03-08 15:30 AC_Von 阅读(259) 评论(0) 推荐(0) 编辑
摘要: Bellman-Ford算法 Bellman-Ford可以用来解决含有负权图的单源最短路径(Dijkstra不能解决这种问题)。代码简单,但是效率低。具体的过程就是不停的松弛,每次松弛进行一次更新。如果更新n次仍然还可以更新,说明图中存在负环,直接跳出就可以。这种情况下无解。 Bellman-Ford的时间复杂度是O(ve).伪代码如下: 1 Bellman-Ford(G,w,s) :{ //图G ,边集 函数 w ,s为源点 2 for each vertex v ∈ V(G) do //初始化 1阶段 3 d[v]... 阅读全文
posted @ 2012-03-05 11:03 AC_Von 阅读(1886) 评论(0) 推荐(2) 编辑
摘要: El DoradoTime Limit: 1000MS Memory limit: 65536K题目描述Bruce Force has gone to Las Vegas, the El Dorado for gamblers. He is interested especially in one betting game, where a machine forms a sequence ofnnumbers by drawing random numbers. Each player should estimate beforehand, how many increasing sub.. 阅读全文
posted @ 2012-03-04 21:49 AC_Von 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 第一感觉就是差距太大了。6题, 7题,甚至AK。。。Orz各路大神! A,简单题。就是模拟那个过程。还是编码能力不行,过的很慢。 B,这个gbx跟我说了下题意,然后用暴力方法试了一下,TLE。后来想到记录连续出现0最多的点的位置,从这个位置种开始调整序列。 C,排序,我直接sort的,很慢。后来bbm说可以用vector。 D,个人感觉是dp,后来gbx说这个catalan数,套一个公式就ok了,我说怎么这么多人秒过。。。唉数论啊! 多刷题,多做比赛。不能仅仅保持状态,要想着怎么提高,刷训练计划,深入理解算法,巩固复习。。。SDUT的ACMER,加油! 阅读全文
posted @ 2012-03-04 10:00 AC_Von 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 图的深度优先遍历和广度优先遍历poj3278,poj2049, poj3083最短路径算法poj1860,poj3259,poj1062,poj2253,poj1125,poj2240最小生成树算法poj1789,poj2485,poj1258,poj3026拓扑排序poj1094, poj3267(DP),poj3687二分图的最大匹配poj3041,poj3020最大流的增广路算法poj1459,poj3436 图的深度优先遍历和广度优先遍历poj3278 简单bfs,话说要加vis滴。话说要剪枝滴。妹的TLE了好几次!纠结... 阅读全文
posted @ 2012-03-01 14:25 AC_Von 阅读(1039) 评论(0) 推荐(1) 编辑
摘要: 枚举 poj1753 (位运算+BFS)√poj2965(同上)√贪心Poj1328 √ 水,poj2109√雷人poj2586√枚举五种情况分治法poj2524√很裸的并查集递推poj2506√大数f[n] = f[n-1] + 2*f[n-2]构造法Poj3295√ 给出前缀式,判是否是重言式。枚举共32种情况模拟法poj1068 (用0表示,)用1表示,把括号的情况模拟出来,然后再统计。√poj2632 插!这题 DBL!if..else..,无穷尽也。。。贴下代码吧 √poj1573, 简单模拟 √poj2993, √poj2996 两题类似,2993处理... 阅读全文
posted @ 2012-02-26 19:55 AC_Von 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 两个典型的例题:POJ 1753, POJ 2965;POJ 1753 状态转移:1 int Flip(int pos, int i) {2 pos ^= (1<<i);3 if(i+4 < 16) pos ^= (1<<(i+4));4 if(i-4 >= 0) pos ^= (1<<(i-4));5 if(i%4+1<4) pos ^= (1<<(i+1));6 if(i%4-1>=0) pos ^= (1<<(i-1));7 return pos;8 }POJ 2965 状态转移:(这题的输出结果是不是要 阅读全文
posted @ 2012-02-24 20:46 AC_Von 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 最大匹配:1274 √,2239 √,2584(二分图多重匹配) √,2536 √,2446 √最小点覆盖(König定理,最小点覆盖数=最大匹配数):3041 √,1325 √,2226 √(构图有点难度),最小边覆盖:2724(构图比较难),3020最大独立集(总点数-最大匹配):1466,3692有向图最小路径覆盖:2060,1422,3216,2594(+传递闭包),1548(和3636类似,可以用Dilworth定理转化为LIS问题,也可以用匹配),最优匹配(KM算法):3565,2195转载:http://hi.baidu.com/lewutian/blog/item/f 阅读全文
posted @ 2012-02-21 20:48 AC_Von 阅读(4172) 评论(2) 推荐(4) 编辑
摘要: 前段时间看了一点网络流,可惜每写总结。也每复习,所以今天拿过来再看照样抓瞎。。。这里好好谢谢总结。几个基本概念: 1)、残留网络:一个流网络图G = (V, E)中,在不超过容量c(u, v)的条件下,从节点u到v之间可以再压入的额外的网络流量就是(u,v)的残留容量。cf(u,v) = c(u, v) - f(u, v); (其中f(u, v)为u到v之间可以再压入的额外流量)由这些残留容量最后构成的新的流网络G‘ = (V, E)就是残留网络。说白了就是已经压入一些流量,消耗掉c(u, v)的一部分容量,然后剩下的容量构成的图就是残留网络。如图b) 就是残留网络: 2)、增广路径... 阅读全文
posted @ 2012-02-20 21:56 AC_Von 阅读(1113) 评论(0) 推荐(0) 编辑
摘要: 1、基于Ford-Fulkerson方法的Edmonds-Karp算法 用广度有限搜索来实现对增广路径p 的计算。即,如果增广路径是残留网络种从s 到t 的最短路径,则能够改进Ford-Fulkerson的界。View Code 1 //做一次增广路径的流量统计 2 3 int augment() { 4 int v, i, ans; 5 bool flag = false; 6 deque<int> q; 7 8 memset(vis, 0, sizeof(vis)); 9 memset(pre, -1, sizeof(pre));10 1... 阅读全文
posted @ 2012-02-20 21:24 AC_Von 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 1、网络流 给定一个二分图G = (X, E, Y)。构造与G对应的网络G‘, 构造方法如下:(1)增加一个源点s, 一个汇点t 。(2)从s向X的每个顶点引一条有向边,从Y的每个顶点向t引一条有向边。(3)将原图G的每一条边改为从X指向Y的有向边。(4)让所有的边容量为1 。然后求最大流,就是二分图的最大匹配边数。 2、匈牙利算法 首先定义增广路:若P是图G种一条联通两个未匹配定点的路径,并且属于M的边和不属于M的边(已匹配的边和未匹配的边)在P上交替出现,则称P为相对于M的一条增广路。特别地,当一边(v, v')两端点均为非M-顶点,通路(v, v')亦称为增广路。算法具体 阅读全文
posted @ 2012-02-19 18:46 AC_Von 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 二分图: 二分图G指的是一种图,其所有的定点分成两个集合X 和 Y,其中X或Y在各自集合种的任意两个点都不相连,而分别在X 和Y 种的两个定点可以构成边。如图 X = {1, 2, 3} Y = {4, 5, 6, 7}图可以表示为 G = (V, E), 其中 V = Xυ Y。 匹配: 二分图G的匹配M 是指边集合E的子集M, 具有性质:M中没有两条边有公共定点。显然,如果M是一个匹配,则X种的每一个定点至多与M的一条边关联,类似的,Y种每一个定点至多与M的一条边关联。 最大匹配:在G的所有匹配种具有最多边数的匹配; 完美匹配:如果所有的点都在匹配边上,称这个最大匹配是完... 阅读全文
posted @ 2012-02-19 18:25 AC_Von 阅读(207) 评论(0) 推荐(0) 编辑
摘要: POJ3207 - Ikki's Story IV - Panda's Trickhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3207POJ 3678 - Katu Puzzlehttp://acm.pku.edu.cn/JudgeOnline/problem?id=3678POJ 2723 - Get Luffy Outhttp://acm.pku.edu.cn/JudgeOnline/problem?id=2723POJ 3683 - Priest John's Busiest Dayhttp://acm.pku.edu 阅读全文
posted @ 2012-02-16 11:00 AC_Von 阅读(961) 评论(0) 推荐(0) 编辑
摘要: 2-SAT水题,还wa了好几次,可见本菜更水。。。课件上都有讲解。。。渣代码:View Code #include <iostream>#include <cstring>#include <cstdio>#include <stack>using namespace std;const int N = 2012;const int M = 1000000;struct node { int to; int next;} g[M];int head[N], scc[N];int dfn[N], low[N];int t, ind, cnt;boo 阅读全文
posted @ 2012-02-15 19:38 AC_Von 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 重点是怎么建图,纠结了一天看2-SAT的资料...a 表示1, a'表示0,则:1、a and b = 1, a' -> a, b'-> b (a b 同时为1 )2、a and b = 0, a -> b', b -> a' (a b 不同时为1)3、a or b = 1, a' -> b, b' -> a (a b不同时为0)4、a or b = 0, a -> a', b -> b' (a b同时为0 同1)5、a xor b = 1, a -> b', 阅读全文
posted @ 2012-02-15 11:00 AC_Von 阅读(552) 评论(0) 推荐(1) 编辑
摘要: 今天突然找到一道2-SAT的题,然后开始找各种资料,课件,最后还是看得云里雾里的。。。2-SAT算法解题过程:1.构图2.求图的极大强连通子图3.把每个子图收缩成单个节点,根据原图关系构造一个有向无环图4.判断是否有解,无解则输出(退出)5.对新图进行拓扑排序6.自底向上进行选择、删除7.输出今天(2/15)wy大牛给我解释是:其实就是把和取/析取式 变成蕴含式。话说偶的离散数学没学好,回头翻书去~~~ 阅读全文
posted @ 2012-02-14 19:36 AC_Von 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 题意,给出每个儿子喜欢的mm的编号,然后再给一个原定的配对序列,求出每个儿子可以泡的mm,并保证每个儿子都有mm泡。 思路:看得大牛的思路,比如儿子u喜欢mm v,则u -> v建一条边。给出的配对序列中,儿子u要泡v则 v -> u建一条边。然后得到一个有向图,然后求出强连通分量。就ok啦ps:1wa没有初始化,2wa结果没有排序输出。。。一个国王搞出2000个儿子,Orz~~渣代码:View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #inclu 阅读全文
posted @ 2012-02-13 15:37 AC_Von 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 题意:添加一定数目的边,构成无向双连通图 方法:一个有桥的连通图,如何把它通过加边变成边双连通图?方法为首先求出所有的桥,然后删除这些桥边,剩下的每个连通块都是一个双连通子图。把每个双连通子图收缩为一个顶点,再把桥边加回来,最后的这个图一定是一棵树,边连通度为1。统计出树中度为1的节点的个数,即为叶节点的个数,记为leaf。则至少在树上添加(leaf+1)/2条边,就能使树达到边二连通,所以至少添加的边数就是(leaf+1)/2。具体方法为,首先把两个最近公共祖先最远的两个叶节点之间连接一条边,这样可以把这两个点到祖先的路径上所有点收缩到一起,因为一个形成的环一定是双连通的。然后再找两个... 阅读全文
posted @ 2012-02-12 21:22 AC_Von 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题意:求割点,并求出割点删掉后剩下的连通块数渣代码:View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 5 using namespace std; 6 7 const int N = 1005; 8 const int M = 100000; 9 const int inf = ~0u>>2;10 11 struct node {12 int to;13 int next;14 } g[M];15 16 int head[N], cut[N];17 阅读全文
posted @ 2012-02-12 15:25 AC_Von 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题意:求一个图中删掉一个结点所得到的连通块数量最大。 思路:设一个结点u,如果u是根结点(图可能是不连通的,所以可能有多个根结点)则删掉u所增加的连通块数为 SUM(u的子结点) - 1;如果u是非根结点,v是u的子结点,则删掉u所增加的连通块数为 SUM(u->v为割边, 既u是到v的割点);渣代码:View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <stack> 5 6 using namespace std; 7 8 阅读全文
posted @ 2012-02-12 10:12 AC_Von 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 求出强连通分量,缩点。得到新图DAG, 求DAG中max(入度为0的点数,出度为0的点数);渣代码:View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <stack> 5 6 using namespace std; 7 8 const int N = 20010; 9 const int M = 50010; 10 11 struct node { 12 int to; 13 node* next; 14 } *first[M]; 阅读全文
posted @ 2012-02-11 20:51 AC_Von 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 题目描述很吓人。。。题意就是求出强连通分量,然后缩点得到DAG, 求DAG中出度为0的缩点,并输出缩点包含的集合(可能有多个这样的缩点)渣代码:View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <stack> 5 #include <algorithm> 6 7 using namespace std; 8 9 const int N = 5010; 10 const int M = 51000; 11 12 stru 阅读全文
posted @ 2012-02-11 19:55 AC_Von 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 将强连通分量进行缩点,然后找缩点后的图中出度为0的缩点所包含的结点数,就是最后结果。如果出现多个出度为0的缩点,则表示不存在所求的点。渣代码:View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <stack> 5 6 using namespace std; 7 8 const int M = 50010; 9 const int N = 10010;10 11 struct node {12 int to;13 int next; 阅读全文
posted @ 2012-02-11 16:51 AC_Von 阅读(377) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 18 下一页