04 2013 档案

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1569题意: 给出M*N的格子,每个格子里都有数字,问你怎么样取数字能使其和最大,前提是取出来的格子不能两两相邻。坑爹: 如果按照方格取数的方法教上去会超时。解法:struct Edge //记录边{ int from; //边的起点 int to; //边的终点 int cap; //边的容量 int next; //优化DFS和BFS的搜索,因为边有很多个,每次从0开始找的话会超时,所以用个cur数组来初始化。}; 用dinic算法,里面有两个部分比较重要,一个是BFS,另一个是DF... 阅读全文
posted @ 2013-04-18 10:22 pc.... 阅读(599) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1565题意: 给出N*N的格子,每个格子里都有数字,问你怎么样取数字能使其和最大,前提是取出来的格子不能两两相邻。坑爹: 一开始以为不是选奇数位置就是偶数位置就能解出来的水题,仔细看了下题意发现天真了。。。解法: 这道题可以用网络流的最小割来做 最大流 = 最小割 = 最小点权覆盖集 = sum - 最大点权独立集先设置一个源点(0)和一个汇点( n*n+1),一开始初始化的时候把源点到所有 (i+j)%2 ==1的格子全部给个值,然后初始化把汇点到所有 (i+j) %2 == 0的格子也给个值,值就... 阅读全文
posted @ 2013-04-13 21:48 pc.... 阅读(1577) 评论(0) 推荐(0)