03 2013 档案

摘要:题意 一个有向图,给出n个点,m条边,给出每条边的起点和中点以及容量,求最大流分析 求最大流模板Accepted Codedinic 1 { 2 PROBLEM:poj 1273 3 AUTHER:Rinyo 4 MEMO:网络流 5 } 6 Program flow; 7 Const 8 Infile = 'flow.out'; 9 Outfile = 'flow.out';10 Var 11 q:Array[0..100000]Of Longint;12 map:Array[0..400,0..400]Of Longint;13... 阅读全文
posted @ 2013-03-24 21:34 Rinyo 阅读(212) 评论(0) 推荐(0) 编辑
摘要:题意 有N部电影,分别可以在一个星期的几天拍摄,并可以拍W个星期,Alice可以有D个星期拍这部电影,一天只能拍一部电影。问Alice能否拍完所有电影分析 这题直接把每天看成一个点,每部电影也看成一个点,然后源点与电影连接,容量为要求天数,电影与能工作的那些天连容量为1的边,每天再连一条容量为1 的边到汇,最大流为所有要求天数之和就是YesAccepted Code 1 /* 2 PROBLEM:poj1698 3 AUTHER:Rinyo 4 MEMO:网络流 5 */ 6 #include<cstdio> 7 #include<queue> 8 #include.. 阅读全文
posted @ 2013-03-24 21:28 Rinyo 阅读(242) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个n*m的格子,要求用1*2的块和2*2缺一角的块填满,求方案数分析 状压dp,以下来自nocow: 状态压缩DP,转移的时候情况很多,要一个个写出来理清楚再写。 一行一行推,opt1为上一行的状态,opt2为当前行的状态,u1,u2分别为上下两行是否与左边相连而凸出来。/* Case 1 2 3 4 5 6 7 | +- | L or U L| or U| -+ or -+ L or U or L or U | | +- -- -- -+ -+ W| L| W W L L old L : connect with Left block U : connect with ... 阅读全文
posted @ 2013-03-24 09:55 Rinyo 阅读(707) 评论(0) 推荐(0) 编辑
摘要:题意 求一个无向图中没有重边的两条最短路,并输出方案分析 注意,是两条最短路!不是一条最短一条次短!所以先来个dijkstra/spfa来算一下最短路 根据dijkstra/spfa求出的dist[i]数组,建立一个新图,上面只有所有满足最短路的边构成的图 这样,建图就Ok了,下面如何解决没有重边呢? 很显然,设立一个源点和汇点,在源点出放出2的值。然后把刚刚建好的新图,边的权值设为1,相当于只能允许一个人经过。这样,如果在汇点得到了2的值,说明这样的两条路是存在的,再利用一个dfs求出即可。 注意dinic需要加上当前弧优化,不然会tle at #17Accepted Code ... 阅读全文
posted @ 2013-03-21 21:50 Rinyo 阅读(271) 评论(0) 推荐(0) 编辑
摘要:题意 一个圆上有2k点,请输出点于点之间连线使得所分区域块数最小的方案总数以及区域数分析 2k个点最少能把平面分成k+1的区域,易证; 至于方案数,利用递推和乘法原理 令f[i]表示2i个点时的方案数,f[0]=f[1]=1,则f[i]=sigma(f[j]*f[i-j-1],0<j<i) 具体参见百度百科:卡特兰数列Accepted Code 1 /* 2 PROBLEM:sgu130 3 AUTHER:Rinyo 4 MEMO:数学 5 */ 6 #include<cstdio> 7 long long f[40]; 8 int... 阅读全文
posted @ 2013-03-21 21:29 Rinyo 阅读(238) 评论(0) 推荐(0) 编辑
摘要:题意 给出n个四位数组成的电话号,要求安排在一个电话本里,从第三页开始安排。使得每一页都是一个数字开头的电话号,且每一页不超过k个;如超过了,则新开一页记录分析 无聊的题。开个数组记录每个数字开头的号码有多少个,然后利用div k记录答案,如果不是整除,则再加一页 注:答案+2Accepted Code 1 /* 2 PROBLEM:sgu127 3 AUTHER:Rinyo 4 MEMO:模拟 5 */ 6 #include<cstdio> 7 int a[10]; 8 int main() 9 {10 int k,n,x;11 scanf("%... 阅读全文
posted @ 2013-03-20 21:43 Rinyo 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题意 有两个盒子,一个里面有a个球,另一个有b个球。现在请你把其中一个盒子的球转移到另一个去,转移的数目是另一个盒子里球的个数。 现在问你几次能把所有球转移到一个盒子里。分析 2k=(a+b)/gcd(a,b),k即为答案 具体怎么证得?我再研究研究0.0Accepted Code 1 /* 2 PROBLEM:sgu 126 3 AUTHER:Rinyo 4 MEMO:数学题 5 */ 6 #include<cstdio> 7 int gcd(int a,int b){return b==0?a:gcd(b,a%b);} 8 int main() 9 {10 ... 阅读全文
posted @ 2013-03-20 21:15 Rinyo 阅读(332) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个n*n的数组b,b[i,j]表示在数组a中,比a[i,j]大的上下左右一共有多少个 求一个满足b的a分析 数据范围n<=4,很明显,深搜 对于每一个格子,从1~n*n枚举,在检查上一个合法之后,进行下一步的搜索Accepted Code 1 { 2 PROBLEM:sgu125 3 AUTHER:Rinyo 4 MEMO:深搜 5 } 6 Program sgu125; 7 Const 8 Infile = 'sgu125.in'; 9 Outfile = 'sgu125.out';10 dx:Array[1.... 阅读全文
posted @ 2013-03-20 20:59 Rinyo 阅读(372) 评论(0) 推荐(0) 编辑
摘要:题意 给出由n条线段围成的多边形(每条边均平行于坐标轴),以及一个点(x0,y0),问这个点是在形内或是形外或是形上分析 对于在线段上,比较容易判断,直接比较一下坐标的位置即可; 若不在形上,则在该点处向上引一条射线。因为是向上引的,所以只和与x轴平行的线有交点,记录交点个数。 注意在记录交点个数时,如果在一条线段的短点,只记一侧的,别记重了。 这样,统计相交次数。如果为奇数,则在形内;偶数,形外。 注意读入数据后比较一下大小并交换。Accepted Code 1 /* 2 PROBLEM:sgu 124 3 AUTHER:Rinyo 4 MEMO:计算几... 阅读全文
posted @ 2013-03-19 22:43 Rinyo 阅读(284) 评论(0) 推荐(0) 编辑