05 2013 档案

摘要:先用网络流求出残留网络,然后根据题意要求出增大那些边的容量使得总的流量最大, 我的做法比较水, 枚举残余网络中的饱和边,然后在bfs找增广路,如果找的到增广路,那么说明增加这条边的容量可是使得最大流变大。还有一种更简单的方法, 在求出残余网络后,从源点和汇点分别bfs一次,如果一条边的一端顶点可以从源点到达,另一端的顶点可以被汇点到达,那么说明增加这条边的容量可以增大总的流量。InternshipTime Limit:5 Seconds Memory Limit:32768 KBCIA headquarter collects data from across the country thro 阅读全文
posted @ 2013-05-29 20:13 chenhuan001 阅读(137) 评论(0) 推荐(0) 编辑
摘要:题意太难读懂。 读懂了就是水题了E -The Lessons of the PastTime Limit:1000MSMemory Limit:65536KB64bit IO Format:%I64d & %I64uSubmitStatusPracticeURAL 1904DescriptionIt was the middle of the 23rd century. Alien creatures suddenly came out from hyperspace and attacked the Twenty-fifth colonization mission just whe 阅读全文
posted @ 2013-05-23 08:54 chenhuan001 阅读(363) 评论(0) 推荐(0) 编辑
摘要:KMP基础题,一开始思路没有理清楚导致写了好久。。。 悲催。要搞清楚题意,题目所围绕的是KMP算法中对自身串进行匹配的那一步假设有两个串 S,T , 我们要求的是S是否存在T中。其中我用的save[i],表示在i位置的后save[j]-1和S串的前save[i]-1个相等, 然后根据这个性质就可以解决String-Matching AutomataTime Limit:1000MSMemory Limit:65536KTotal Submissions:113Accepted:70DescriptionThe finite state automaton (FSA) is an importa 阅读全文
posted @ 2013-05-20 23:05 chenhuan001 阅读(231) 评论(0) 推荐(0) 编辑
摘要:和poj 3352 一样, 相同的代码都能过。#include <stdio.h>#include <string.h>#include <iostream>using namespace std;#define N 5050#define M 10010#define INF 0x3fffffffstruct node{ int from,to,next;}edge[2*M];int n,m;int cnt,pre[N];bool mark[2*M];bool save[2*M];int low[N];int link[N];int d[N];void a 阅读全文
posted @ 2013-05-20 17:41 chenhuan001 阅读(137) 评论(0) 推荐(0) 编辑
摘要:先求出桥,然后去除桥后得到边双联通分量, 将边联通分量缩成一个点, 然后就出所有度为1的点(叶子节点)个数n,答案就是n/2+n%2.#include <stdio.h>#include <string.h>#include <iostream>using namespace std;#define N 5050#define M 10010#define INF 0x3fffffffstruct node{ int from,to,next;}edge[2*M];int n,m;int cnt,pre[N];bool mark[2*M];bool save 阅读全文
posted @ 2013-05-20 17:26 chenhuan001 阅读(142) 评论(0) 推荐(0) 编辑
摘要:以前看过KMP, 但是今天没有看资料, 自己想的,完全想通,感叹KMP的奇妙。Number SequenceTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7750Accepted Submission(s): 3532Problem DescriptionGiven two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 & 阅读全文
posted @ 2013-05-19 02:19 chenhuan001 阅读(192) 评论(0) 推荐(0) 编辑
摘要:比较简单LCA的题目了, 主要就是根据题目所给出的树边建立有向的树, 然后从树根开始进行LCA, 要注意的是,题目中给的操作有两种,第一种是从当前点到父亲结点,第二种是从当前点到子树中的任意一个点。CD操作Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 102Accepted Submission(s): 24Problem Description 在Windows下我们可以通过cmd运行DOS的部分功能,其中CD是一条很有意思的命令,通过. 阅读全文
posted @ 2013-05-17 21:54 chenhuan001 阅读(248) 评论(0) 推荐(0) 编辑
摘要:先求出点的双联通分量,每个分量可以看成一系列相邻的环, 且只要在一个联通分量发现奇数环那么这个分量的所有点都在奇环中.Knights of the Round TableTime Limit:7000MSMemory Limit:65536KTotal Submissions:7598Accepted:2358DescriptionBeing a knight is a very attractive career: searching for the Holy Grail, saving damsels in distress, and drinking with the other kni 阅读全文
posted @ 2013-05-17 18:51 chenhuan001 阅读(158) 评论(0) 推荐(0) 编辑
摘要:寻找割边又叫桥。 和找割点的很类似Burning BridgesTime Limit:5 Seconds Memory Limit:32768 KBFerry Kingdom is a nice little country located on N islands that are connected by M bridges. All bridges are very beautiful and are loved by everyone in the kingdom. Of course, the system of bridges is designed in such a way t 阅读全文
posted @ 2013-05-15 13:46 chenhuan001 阅读(156) 评论(0) 推荐(0) 编辑
摘要:挺有意思的题。思路不难, 用hash判重, 但是要坑人的是一开始怎么将每串序列按照同一规律排列。比如2 1 2 1 1 2 1 1 2 2 1 2怎么转化为 1 1 2 2 1 2 ,也就是转化为字典序最小, 最后没有办法只有枚举, 3000+ms 险过.Snowflake Snow SnowflakesTime Limit:4000MSMemory Limit:65536KTotal Submissions:26254Accepted:6900DescriptionYou may have heard that no two snowflakes are alike. Your task i 阅读全文
posted @ 2013-05-15 00:05 chenhuan001 阅读(206) 评论(0) 推荐(0) 编辑
摘要:其实就是以dfs的顺序进行背包处理. 想了快一天,终于1A了, 但是虽然过了,但是心里还是有点虚,可能对背包的原理没有透彻掌握,所以宏观上看是可行的,但是一想到一步一步的具体转移时又会觉得很混乱. 一、首先这种题要做的是确定状态, 每个结点要记录什么状态 ? 这题根据题意要记录的是 1. 从这个结点u开始不到达u以上的结点但是最后回到u结点经过的最大权 记为dp[u][k] 2.从这个结点u开始不到达u以上的结点最后不必回到u经过的最大权 记为dp1[u][k]二、有了这两个条件就可以进行状态转移了。 假设当前结点为u, u的子结点为 vi那么从u结点出发最后回到u结点的所有情况为 dp1[. 阅读全文
posted @ 2013-05-14 21:13 chenhuan001 阅读(173) 评论(0) 推荐(0) 编辑
摘要:用了#include <sstream> 来处理前面的数据,太好用了其他的就是用类似tarjan的算法来求割点.NetworkTime Limit:1000MSMemory Limit:10000KTotal Submissions:7537Accepted:3546DescriptionA Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting several places numbered by integers from 1 to N . N 阅读全文
posted @ 2013-05-14 09:49 chenhuan001 阅读(183) 评论(0) 推荐(0) 编辑
摘要:狠狠的复杂度 n*n*n*n*m 。。。 你是在开玩笑嘛。。求最小割集的办法,枚举两个不相邻的点分别作为源点和汇点, 看流过的流量为多少, 为了体现一个点只能用一次所有每个点要拆成两个点Cable TV NetworkTime Limit:1000MSMemory Limit:30000KTotal Submissions:3424Accepted:1593DescriptionThe interconnection of the relays in a cable TV network is bi-directional. The network is connected if there 阅读全文
posted @ 2013-05-14 08:15 chenhuan001 阅读(363) 评论(0) 推荐(0) 编辑
摘要:思维题,想到就秒杀,没想到或者想错方向了那么就完蛋了0 1 2 3 41 2 3 4 0你就会发现是可以的。我经历了很久错误的思维,找到了一些性质1. ai+bi的和一定为一串从(n/2)递增的序列, 因为所有ai+bi(i从0-n-1)的和为一个固定的数,而得到的ci又要是0-n-1各一次。 所以也同时说明偶数的情况是不可行的。然后稍加组合就可以发现将两个 0-n-1 的序列错开相加就可以得到结果。。C. Lucky Permutation Tripletime limit per test2 secondsmemory limit per test256 megabytesinputsta 阅读全文
posted @ 2013-05-13 15:43 chenhuan001 阅读(302) 评论(0) 推荐(0) 编辑
摘要:结合tarjan算法思想,这题终于写了出来。同样用dfs将图变成为一颗树,这样可以提供许多有用的性质。对于一个无向连通图,dfs后的树为只有回边(回边Euv,v是u的祖先)和生成树的边的图。 那么在遍历到一个点u的时候,可以知道如果不考虑这个点,如果与u相邻的点连通那么u不是割点,否则是割点。 那么只需要判断与u相邻的点是否连通就行了,于是借鉴tarjan求强连通的办法,在dfs时,对每个点标记一个深度low[N]也就是从根到这个点最短路径(经过的最小结点数), 然后在遍历到u点的时候,看看与u相邻的点v的low[v], 如果low[U] >= low[u]那么说明u就是割点. 因为v点 阅读全文
posted @ 2013-05-13 14:08 chenhuan001 阅读(202) 评论(0) 推荐(0) 编辑
摘要:关于这题我看很多人都没有证明,在此简单证明下。当在缩完点后形成DAG,求出 入度为0的点的个数为n,出度为0的点为m。 那么只需max(n,m)条边就可以使这个DAG图变成一个强连通分量.第一步,将孤立的顶点拆成两个点之间连一条有向边。 于是可以将所有入度为0 的点划分为一个集合N, 所有出度为0的点划分为一个集合M。 可以知道的是,如果再这两个集合中求一次最大匹配, 那么对于这个求得最大匹配(匹配数为k), 只需用k条多加的边就可以变成强连通,可以将这个强连通缩成一个点s, 又可以知道的是,对于剩下来的点,要么有一道流向s点边,要么有一条从s流出的边。 那么在除去最大匹配后的N和M 集合中各 阅读全文
posted @ 2013-05-10 00:29 chenhuan001 阅读(141) 评论(0) 推荐(0) 编辑
摘要:先用tarjan缩点, 然后入度为0的点就是必须要选择点同时也是最小的情况。Summer HolidayTime Limit: 10000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1098Accepted Submission(s): 474Problem DescriptionTo see a World in a Grain of SandAnd a Heaven in a Wild Flower,Hold Infinity in the palm of your 阅读全文
posted @ 2013-05-09 14:17 chenhuan001 阅读(208) 评论(0) 推荐(0) 编辑
摘要:简单tarjan算法。tarjan算法其实就是先找出一个强连通分量树的根,然后就很容易就可以找到整个强连通分量, 关键是利用dfs树迷宫城堡Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4584Accepted Submission(s): 2002Problem Description为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说 阅读全文
posted @ 2013-05-09 09:00 chenhuan001 阅读(197) 评论(0) 推荐(0) 编辑
摘要:题意: 判断二分图最大匹配中的关键边,也就是去掉这些边就不能得到最大匹配了由于题目给出的是100*100的图,枚举+匈牙利 复杂度为10^8,有些不保险, 比较稳的方法就是用HK,使复杂度变成10^7, 也可以进行一些小的优化来节省时间,不过这题数据还是比较水,赤裸裸的匈牙利0MS就过了棋盘游戏Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1488Accepted Submission(s): 856Problem Description小希 阅读全文
posted @ 2013-05-08 01:02 chenhuan001 阅读(197) 评论(0) 推荐(0) 编辑
摘要:KM简单题,但是要注意一些东西。1. 题目说的500*500个点的图, 按照KM的复杂度是不能过的, 但是因为这题数据不行, 所以这样也是无压力的可以过, 但是为了保险,还是用邻接表比较好2. 题目中有一个关键的话 “he still wants to design a creative plan such that no student is assigned to a room he/she dislikes” , 意思就是不能将学生分配到他评价为负的房间,这样就代表了读数据时负边无效。3.因为没有给出n,m的大小, 所以按照一般的KM算法可能会出现死循环, 这时要加一个判断条件, 当在进 阅读全文
posted @ 2013-05-07 23:29 chenhuan001 阅读(235) 评论(0) 推荐(0) 编辑
摘要:有点意思的题目。。。解题的关键在于, 假设这个数组中负数的个数为N,非负数的个数为M ,N+M=L 。 然后证明的是, 对于有N个负数的数组, 这N个负数可以任意选择。 这样题目就变成了求解这个数组进行无限次操作,所能得到最小的负数的个数.然后bfs 直接上。那个性质很好证明。 不说了C. Yaroslav and Sequencetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYaroslav has an array, consisti 阅读全文
posted @ 2013-05-07 09:44 chenhuan001 阅读(211) 评论(2) 推荐(0) 编辑
摘要:比较基础的题了。 构图模板SimilarityTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1076Accepted Submission(s): 411Problem DescriptionWhen we were children, we were always asked to do the classification homework. For example, we were given words {Tiger, Panda, 阅读全文
posted @ 2013-05-07 09:35 chenhuan001 阅读(235) 评论(0) 推荐(0) 编辑
摘要:题目 要求最小改变多少条边,使得总的费用最大。以前遇到这种题目的时候,很多的时候都是看这条边是不是关键的边,经常就是去掉这条边看还满不满足条件。 但是这题不能用这种想法。这题的解法甚是巧妙,感觉可以应用在许多方面。由KM算法求解最优解的性质,在以不改变基本总权值的情况下(同时扩大K倍,最后除以K(k>n)),增大某些边( 只+1 ), 使得在算法运行结束后能够得到我们要的那些边的最大情况。这种思想必须掌握!AssignmentTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Tot 阅读全文
posted @ 2013-05-06 16:50 chenhuan001 阅读(221) 评论(0) 推荐(0) 编辑
摘要:简单bfs,位运算判重 ,瞬间秒杀翻纸牌游戏Time Limit: 9000/3000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1574Accepted Submission(s): 515Problem Description有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌。但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者有反翻到正)时,他左右两张纸牌(最左边和最右边的纸牌,只会影响附近 阅读全文
posted @ 2013-05-05 02:07 chenhuan001 阅读(209) 评论(1) 推荐(0) 编辑
摘要:KM最佳匹配。KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B[i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终成立,初始A[i]为与xi相连的边的最大边权,B[j]=0。KM算法的正确性基于以下定理:设 G(V,E) 为二部图, G'(V,E') 为二部图的子图。如果对于 G' 中的任何边<x,y> 满足, L(x)+ L(y)== Wx,y,我们称 G'(V,E&# 阅读全文
posted @ 2013-05-05 00:12 chenhuan001 阅读(310) 评论(0) 推荐(0) 编辑
摘要:一开始以为这题是二分图的匹配,然后用匈牙利做,TLE,然后用HK 做, TLE。。。最后发现是用网络流做的,而且要将100000个点压缩, 因为每个点的可能选择情况有2^10 ,所以根据这个可以将图压缩成1000*10大小的图,这样用网络流就没有压力了...网络流建模很重要.!EscapeTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2483Accepted Submission(s): 687Problem Description2012 阅读全文
posted @ 2013-05-01 15:40 chenhuan001 阅读(218) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示