摘要: 题意:在一个n*m的网格上,从(0,0)走到(n-1,m-1),每次只能向右或者向下走一格。一个人最初有一个生命值x,走到每一个格生命值会变为x + s[i][j],(s[i][j]可为负,0,正),若生命值小于等于0,则人死亡。告诉网格上所有s[i][j],求x的最小值使得该人能够或者走到(n-1,m-1)。|s[i][j]| 0) d[i][j] = max(d[i][j], d[i-1][j] + s[i][j]), if (d[i][j-1] > 0) d[i][j] = max(d[i][j], d[i][j-1] + s[i][j])。初始化时将所有d[i][j]赋值为-1。 阅读全文
posted @ 2013-12-03 20:51 Plumrain 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题意:对于一个数列A,substring是一个连续子串,subsequence是其非连续子序列。对于一个数字序列,记它的diversity是它的最大元素减去最小元素的差。给出一个数字序列,求与它diversity相同的substring和subsequence各有多少个。比如若A为1,4,3,4,则答案为3和6。解法:组合数学问题。首先,记A中最大元素为ma,最小元素为mi,且最大元素有s1个,最小元素有s2个,数列A长度为n。 则A的所有subsequence共有2^n个,不含ma的subsequence有2^(n-s1)个,不含mi的subsequence有2^(n-s2)个,mi和m.. 阅读全文
posted @ 2013-12-03 20:25 Plumrain 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 题意:有p个无限电波发射点,他们每个的有效范围都是d,即能与半径为d的圆内的其他无线电波点传递信息。同时,这些无线电波点之中可以选择s个点建立通讯卫星,建立了通讯卫星的之后的点都能传递信息。给出p,s和每个无线电波发射点的坐标,求d的最小值。解法:此处就是做一遍最小生成树,输出树的所有边中第s大的那个的值。具体证明过程见[小结论]使生成树的第k大的边最小的边的求法。tag:MST 1 /* 2 * Author: Plumrain 3 * Created Time: 2013-12-02 23:36 4 * File Name: G-POJ-2349.cpp 5 */ ... 阅读全文
posted @ 2013-12-03 02:29 Plumrain 阅读(260) 评论(0) 推荐(0) 编辑