随笔分类 -  LA

摘要:题意:在一个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 阅读(182) 评论(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 阅读(359) 评论(0) 推荐(0)
摘要:题意:有一些简单化合物,每种化合物含有两种元素,要将这些化合物装到车上,但是如果车上的化合物中,存在某k个化合物正好包含k种元素,则会爆炸。现在你是装箱工人,每当你拿到一个化合物,你都会检查如果将它装到车上是否会参生爆炸,如果会你就会拒绝将这个化合物装上车。问一共会拒绝装多少个化合物。解法:将每种元素视为一个点,每种化合物视为一条边,也就是说,不能存在某k个点,恰巧为一个环。这样的话,就是每次拿到一个化合物检查一下两种元素是否在同一个连通分量里,如果在则不能装箱。这样就是一个裸的并查集了。tag:并查集 1 /* 2 * Author: Plumrain 3 * Created Time... 阅读全文
posted @ 2013-11-29 23:15 Plumrain 阅读(493) 评论(0) 推荐(0)