2013年8月30日
摘要: 题意: 给n(n0;若有dp[k]+f(k,i)> dp[j]+f(j,i),那么一定有dp[i+x] > dp[k]+f(k+1,x+i); 也就是说 k一定不是对应着i的一个可能最优解。 在求解dp[i+x]时,k点就不用枚举了。若有dp[k]+f(k,i) dp[j]+f(j,i+x)。重新思考一下(****)中dp[i]的定义,应用数学归纳法:dp[1]=f(0,1) 或者dp[1]=f(0,1)+dp[0] (dp[0]=0)dp[2]=min{dp[1]+f(2,2),dp[0]+f(1,2)} (刚好对应两种区间拆分方式)假设dp[k]用上式定义也正确,那么 dp[k 阅读全文
posted @ 2013-08-30 21:03 男神发量 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个横轴等距且为1的直方图,直方图总长为n,现给出每一列上的纵坐标hi(0 = (n+1-i)*height[i],不管di是多少,它肯定不是最优解 这样思路是不是就很好想了,用一个队列记录所有当前可选的i,又由于队列中的i,j没有height[j] 2 #include 3 #include 4 #include 5 using namespace std; 6 #define f(head,i) height[que[head]]*(i-que[head]) //矩形[que[head],i-1]的面积 7 typedef long long lli; 8 lli h... 阅读全文
posted @ 2013-08-30 13:32 男神发量 阅读(220) 评论(0) 推荐(0) 编辑
  2013年8月12日
摘要: 鸣谢: http://www.cppblog.com/y346491470/articles/152317.html【题意】:一个城市有n座建筑物,每个建筑物里面有一些人,为了在战争爆发时这些人都可以避难,城市里面建了m座避难所。每座避难所只能容纳有限人数。给出每个建筑物和避难所的坐标(题目要求距离为曼哈顿距离+1)。现在给你一种避难方案,问这种方案是否为最优方案,如果不是,请输出一种比当前更优的方案(不一定最优)。【题解】:好明显的费用流(距离看成费用),如果此题建费用流模型找最小费用流必定超时,而且题目不需要我们找到最优方案。定理:一个费用流是最小费用流的充要条件是这个费用流的残量网络没有 阅读全文
posted @ 2013-08-12 19:30 男神发量 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 二分图的最小点权覆盖,选定点集,与该点集有关的边覆盖所有顶点,且该点集的点权值和最小。有类似于匈牙利算法一样的带权匹配算法,但是这里就不介绍了。个人比较推荐,用最大流算法更好理解,写起来更容易。题意:一个m X n的方阵,方阵格子中有老鼠屎,神枪手一枪能打掉一行或者一列上的所有赃物,让选定某些行和某些列,打掉所有赃物。已知条件: m、n,老鼠屎l粒,在每一行和列上布置神枪手的花费ci、cj,l粒老鼠屎的坐标。总费用为选定的行和列对应的花费值乘积,求最小总费用。第一步:化积为和,使用幂函数,最后得到结果时再还原!!!第二步:最大流算法求最小点权覆盖。先弱弱证明一下该算法。坐标为(i,j)的老鼠屎 阅读全文
posted @ 2013-08-12 13:20 男神发量 阅读(270) 评论(0) 推荐(0) 编辑
  2013年8月7日
摘要: 题目大意:给一个无向图,求此图的最大密度子图。输入:n,m,表示有n个点(1 -- n编号),接m行,每行u v,表示u到v有一条无向边。网上各种传说这是一种分数规划的东西,然后我也不了解,搜了很多资料,也没有人给了很好的解释。貌似胡伯涛的一篇文章里提到了这样的算法,但是里面的证明各种看不懂。好吧,看不懂我就只有另寻他法了。乍一看,毫无策略。方案核心是要找答案,那就直接枚举答案测试好了。题目要找最大密度**,也即(选中的边数/与这些边边有关的点数)。那就二分枚举这个最大密度吧!!!假设答案是k,任意所选边集为E,与E对应的点集V,即有max{|E|/|V|} == k,也就是说|E|/|V| 阅读全文
posted @ 2013-08-07 19:10 男神发量 阅读(221) 评论(0) 推荐(0) 编辑
  2013年8月5日
摘要: 题目大意: 一个XX用n天要给m个女神拍写真。这n天里每个女神i分别至少要拍Gi张照片,XX在第j天会给指定Cj个女神最多拍Dj张照片,每个女神第j天拍照数在lj到hj张照片。问XX是否安排完成他的任务,不能输出-1,如果能的话,让他尽可能多拍照。先输出他最多能拍的张数,然后对于输入每一行提到要拍照的女神,按照顺序输出当天那个女神要拍照的张数。(就描述到这了,更多请访问下面的链接)题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3442。这是一道很典型的有源汇的上下界最大流。容我鸣谢一下先:http://www.c 阅读全文
posted @ 2013-08-05 22:00 男神发量 阅读(740) 评论(0) 推荐(0) 编辑
  2013年7月30日
摘要: 题目大意:给一个树形图n个点(n-1条边),XXX要练习竞走,每次选定一个点k作为开始点,每次走从k开始能走的最长的一条路径(不要重边)。要求出最长的连续的这样的k,假设连续有kx个,前提:这样kx条路径的长度的任意两个值的差不超过m。输入: n,m; 接下来n-1行数据,每一行两个整数fi,di。第i行表示 第i+1个点与fi连着一条长度为di的边。不用想,稍微有一点点水平的朋友都能想到,首先对于每一个点,用一个树形dp求每个点能走到的最长路径长。树形dp: 定义结构体: max1,max1from, max2。 //记录跟这个点有关的最长路径长、最长路径长点, 第二最长路径长. tre.. 阅读全文
posted @ 2013-07-30 18:34 男神发量 阅读(401) 评论(0) 推荐(0) 编辑
  2013年7月29日
摘要: 以前只是A过很简单的最大闭合权像hdu1565之类,完全的最大流模板题。但是都完全不太懂最大闭合权的定义及其用途。关于最大流的基础知识,大家可以自己网上搜索关键字。有点基础的哥们妹们,推荐看看胡伯涛 《最小割模型在信息学竞赛中的应用》,里面除了很多理论知识以外还有很多不错题集,大家可以练练。最大闭合权,是最大流一个很经典的应用,关键字:闭合图,最大闭合权。这种题目表现的模型通常是A-->B-->C,即A事件发生,其后续事件也一定要发生。如果每个事件发生都有一个效益值的,用最大流算法便可以求出这种效益的最值。这个题目的另外一个问题是要求删掉的最少点数,乍一看好像很陌生,但是,大家不妨 阅读全文
posted @ 2013-07-29 20:09 男神发量 阅读(268) 评论(0) 推荐(0) 编辑
  2013年7月20日
摘要: 博弈论——sg,mexsg性质:1.在末态的状态点为N态。 2.P态的下一步有一个是N态 3.N态的下一步全部是P态。当然这是对于单点一个游戏的情形,也相当于NIM只有一堆石子。mex(minimal excludant),很俗地可以解释为:mex{S}表示S集合中从0开始,最小未出现的数字。关于sg与mex的关系,可以引用这里http://www.cnblogs.com/Knuth/archive/2009/09/05/1561007.html的一段话:对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Garundy函数g如下:g(x)=mex{ g(y) ... 阅读全文
posted @ 2013-07-20 22:49 男神发量 阅读(911) 评论(0) 推荐(0) 编辑
  2012年11月18日
摘要: 成都赛B题,水得可以的,一刚开始公式不知道是不是自己故意的写错了,然后以为用java大数能AC的,就交给队友写,后来才发现要算到C(n,n+k),当n很大的时候内存都受不了。然后在找个n=3,p=0.4时的例子,发现公式错了,我去,已经两个半小时了。还是用哥自创的科学计算法吧,O(n)的效率。定义一个结构体,记录两个数f(double),d(int),表示的数为f*10^d。f可以为这个数作缓冲,得到答案是将d调到0,其中的f就是答案了。然后算出那个公式的第一项a[0] = p^(n+1), b[0] = (1-p)^(n+1);(O(n)的效率)然后用组合数学中的性质a[k+1] = a[k 阅读全文
posted @ 2012-11-18 14:46 男神发量 阅读(929) 评论(3) 推荐(0) 编辑