上一页 1 2 3 4 5 6 7 ··· 19 下一页
摘要: 2013 7.22 周一 算是晴吧 从临沂坐车赶回淄博,可以说大三的生活基本上开始了。 偶尔想想大学两年自己干了些什么,可能从大一的那个目标上来讲自己因为很多事把自己完完全全地废了。但是自己走过的,不会后悔,唯一该做的就是补回来。想了下剩余这两年的计划,第一个是acm,第二个是考研,第三个是技术,技术是为了大四考完研可以跟着师傅打打工@王老师,话说现在的那个钥匙链自己带着,那个情侣钥匙环送给宿舍赵四了,我想了想,我估计未来十年都用不上拿东西了--。 小总结一下,最近在家里看了下c++primer前面学的内容(给自己的记性跪了,忘了带回学校),然后各种玩(好吧这个其实放在第一位)- -。(... 阅读全文
posted @ 2013-08-12 02:48 某某。 阅读(279) 评论(2) 推荐(0) 编辑
摘要: 题意:一个连通的无向图,求至少需要添加几条边,救能保证删除任意一条边,图仍然是连通的。链接:http://poj.org/problem?id=3352思路:边的双连通图。其实就是要求至少添加几条边,可以使整个图成为一个边双连通图。用tarjan算法(求割点割边)求出low数组,这里可以简化,然 后依据“low相同的点在一个边连通分量中”,缩点之后构造成树(这里可以直接利用low[]数组,low[i]即为第i节点所在的连通分量的标号)。求 出树中出度为1的节点数left,答案即为(leaf+1)/2。代码: 1 #include 2 #include 3 #include 4 #... 阅读全文
posted @ 2013-08-12 02:23 某某。 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 问加一条边,最少可以剩下几个桥。先双连通分量缩点,形成一颗树,然后求树的直径,就是减少的桥。本题要处理重边的情况。如果本来就两条重边,不能算是桥。还会爆栈,只能C++交,手动加栈了别人都是用的双连通分量,我直接无向图改成有向图搞得强连通水过。 1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 using namespace std; ... 阅读全文
posted @ 2013-08-11 17:49 某某。 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 先说一下割点跟割边吧。割桥就是如果一个连通图里删除这条边之后,这个图会变成两个连通图,那么这条边就称之为割桥。这是割桥的代码,里面呆着lca求法。割点和割桥的就是用一个时间戳和回到祖先确定。用dfs的时间戳可以看出。割点为low[v] >= dfn[u]割边为low[v] > dfn[u]。但是要注意的是割点的条件对于搜索树的根节点是要特殊处理的,当根节点的孩子大于1的时候就一定是割点。 1 void tarjan(int u,int pre) 2 { 3 int v,i,j; 4 dfn[u] = low[u] = ++dfsclock; 5 loop(0,i,g[u... 阅读全文
posted @ 2013-08-11 17:14 某某。 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4655题意:给你一组整数,代表每个木块所能涂成的颜色种数(编号1~ai),相邻的两块所能涂成的颜色如果是一样的认为是一块木块,问所有的涂色方案能涂成的木块总数。思路:一开始赵鹏画的图上找到的思路。n*a1*a2*。。。。an代表的是不急相同颜色所能涂成的块数。但是假如说4 3 那么他们两块之间一定会有3种情况会涂成一个颜色即认为是一块,那么他们之间的总数为4*3-3。也就是说我们每一次产生的重复数会影响这个他所在的所有情况的个数,而每两个就会减少当前情况的一个,减少量为前面的所有情况*后面的所有情况*当 阅读全文
posted @ 2013-08-10 12:42 某某。 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 链接:http://poj.org/problem?id=3592题意:题目大意:给定一个矩阵,西南角为出发点,每个单位都有一订价值的金矿(#默示岩石,不成达,*默示时佛门,可以达到指定单位),队#外,每个点只能向右走或向下走,并且可以反复经过一个点。如今请求得最多可以获得多大好处。一开始看到这个题,会以为是费用流。但是计划上是在tarjan上的。我觉得如果比赛的时候有这道题估计我也就挂了。因为这个图大部分的点只有两个后续节点, 但是*会有更多的节点,所以说这样会产生环,因此可以吧整个图求强连通进行缩点,因为每个强连通分量重的点你是可以得到她所有的值。不管走几次,就是那么多,缩完点之后就可以构 阅读全文
posted @ 2013-08-07 15:41 某某。 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 题意: 有N个点,M条边。 点有权值, 边有权值。 Alice, Bob 分别选点。 如果一条边的两个顶点被同一个人选了, 那么能获得该权值。问 Alice - Bob?链接:http://acm.hdu.edu.cn/showproblem.php?pid=4647思路: 贪心。对于一条边来说, 如果拿了一个点, 说明已经拿了该边的一半权值。如果某边的两个的顶点分别是不同的人。 那么差值还是不变的。如果某边的两个顶点分别是同一个人。 那么和值也不变。所以我们可以把一个边分解到两个顶点上。然后依次Alice 取最大,Bob 取次大。 因为 他们都是绝顶聪明的。当时也想过,但是觉着不可能这么简单 阅读全文
posted @ 2013-08-07 09:30 某某。 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4638题意:就给给你n个数(大小在1-n里),然后给你连续的可以构成一个块,再给你N个询问,每个询问一个l,一个r问你l-r里面有多少个连续的段其实每一个数都是一个独立的段,当有连续的时候连续段数就会-1,因为连续的段中,位置最靠前的哪一个只会影响以这个位置为l的询问,不会影响后面的,所以,我们可以对询问从后向前去找,离线话去找。这样的话就可以用树状数组去解决问题、 1 #include 2 #include 3 #include 4 #include 5 #include 6 #... 阅读全文
posted @ 2013-08-05 16:11 某某。 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4630题意:给你N个数,然后给你M个询问,每个询问包含一个l 一个r,问你lr 这个区间中任意两个数最大的公约数。思路:以为是l,r所以,只跟l后面的有关,所以把询问排序,数组a[]从后往前枚举约数,标记下这个约数最早出现的位置,如果这个约数出现了,那就让这个数更新一下最大的保存在树状数组中,如果没出现,那么就标记一下位置就好~这样的后面的答案会影响前面的但是前面的不会影响后面的。 1 #include 2 #include 3 #include 4 #include 5 #inc... 阅读全文
posted @ 2013-08-04 14:40 某某。 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题意:告诉你一些骨牌,然后骨牌的位置与横竖,这样求最多保留多少无覆盖的方格。这样的话有人用二分匹配,因为两个必定去掉一个,我用的是最小割,因为保证横着和竖着不连通即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define loop(s,i,n) for(i = s;i edges; 14 vectorg[maxn],G[maxn]; 15 void addedge(int u,int v,int cap,int flow) 16 { 17 //printf("********u %d *... 阅读全文
posted @ 2013-08-03 11:03 某某。 阅读(221) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 19 下一页