2012年8月7日
摘要: SGU_438 之所以会有时间的差别,一方面的原因在于过的石头的数量,另一方面的原因就在于石头的承重能力有限。为了体现石头的承重能力,可以将第i个石头拆成i和i'两个点,然后连一条i->i'的边,容量为第i个石头的承重,这样就可以体现出一秒内站在第i个石头上的人不会超过石头的承重。为了计算时间,可以将每个石头再按时间的顺序拆成若干个点建图,然后枚举时间的增长,每次将图补全一层,直到最大流大于或等于M为止。#include<stdio.h>#include<string.h>#include<algorithm>#define MAXN 阅读全文
posted @ 2012-08-07 22:32 Staginner 阅读(382) 评论(0) 推荐(0) 编辑
摘要: SGU_326 这个题目的武大OJ的1124基本是一样的,只不过多了队外的比赛,对于队外的比赛只要让第1组全部赢而其他组全部输即可,剩下的就和WOJ_1124是一样的处理方式了,具体的思路可以参考我的WOJ_1124的题解:http://www.cnblogs.com/staginner/archive/2012/08/07/2626317.html。#include<stdio.h>#include<string.h>#include<algorithm>#define MAXN 25#define MAXD 430#define MAXM 2450#de 阅读全文
posted @ 2012-08-07 13:16 Staginner 阅读(301) 评论(0) 推荐(0) 编辑
摘要: WHU_1124 首先对于有N参加的比赛,肯定是赢了最好,暂时先不考虑其他的比赛,这是如果各队的积分有大于或等于第N队的,那么肯定是输出NO的。 接下来考虑其他的比赛,对于任意队伍i而言,得分是不等等于或者超过score[N]的,因此可以将源点和i连一条容量为score[N]-score[i]-1的边,由于比赛的总积分是2,自然将比赛和汇点连一条容量为2的边,之后就是谁参加哪场比赛就对应连一条容量为2的边即可,这样做最大流,如果最后能够满流就说明所有的比赛都能安排妥当。#include<stdio.h>#include<string.h>#include<algo 阅读全文
posted @ 2012-08-07 10:54 Staginner 阅读(454) 评论(0) 推荐(0) 编辑