上一页 1 2 3 4 5 6 7 8 9 10 ··· 25 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:给一颗树求距离每个节点的最远距离。。 每个节点维护两个信息就可以了,f[u][0]和f[u][1],分别表示子树的最大深度和次大深度,然后一边DFS合并子树就行了。。 1 //STATUS:C++_AC_15MS_1016KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #inc... 阅读全文
posted @ 2013-08-17 16:18 zhsl 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4679 题意:给一颗树,每个边有一个权值,要你去掉一条边权值w剩下的两颗子树中分别的最长链a,b,使得w*Min(a,b)最小。。 说白了就是要枚举每条边,然后在O(1)的时间内求出两颗子树的最长链。因此我们可以考虑用树形DP,首先一遍DFS,对于每个节点维护两个信息,hign[u]:u为根节点的子树的深度,f[u]:u为根节点的子树的最长链。然后还要维护一个hige[i][0]和hige[i][1],分别表示u为根节点的子树,不包括边 i 的深度和最长链。然后再一遍DFS,根据上一节点的信... 阅读全文
posted @ 2013-08-17 15:04 zhsl 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4678 题意就不说了,太长了。。。 这个应该算简单博弈吧。先求联通分量,把空白区域边上的数字个数全部求出来a[i](就是一个连通分量),然后就是n堆石子,每堆每次可以取一个或者全部取掉,然后要注意在取玩边上的石子后,剩下的就只能一次取掉了,因此我们直接把空白区域上的算做一个a[i]+1。然后这个SG函数很好求,奇数是1,偶数是2。。。 1 //STATUS:C++_AC_156MS_4268KB 2 #include 3 #include 4 #include 5 //#in... 阅读全文
posted @ 2013-08-16 23:19 zhsl 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意:给A,B,C三个串,求一个最长的串D,满足D是A和B的subsequence,C是D的substring。。 比赛那天把substing搞成了subsequence,,,sd。。。 挺水的一题,直接枚举C在A和B串中的位置,当然是最短的位置,然后求两遍A和B的最长公共子序列,一个从前往后,另一个从后往前,然后遍历枚举就可以了,O(n^2).. 1 //STATUS:C++_AC_343MS_8164KB 2 #include 3 #include 4 #inclu... 阅读全文
posted @ 2013-08-16 21:10 zhsl 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4675 题意:给一个大小为N的数列a[i],然后一个数M以及一个数K,要你求得一个数列b[i],其中b[i]有K个数与a[i]中的不相同,使得gcd(b[i])=j。对于每个 j ,求出满足的b[i]的个数。。 首先我们统计数列a[i]每个数的个数,假设现在求gcd(b[i])=j,那么可以在t=M/j的时间内求出 j 的倍数的个数cnt。那么就相当于在cnt个中选择N-K个不变C(cnt,N-K),在剩下的 j 的倍数中有(t-1)^(cnt-t)种,非 j 的倍数中有t^(N-cnt)种... 阅读全文
posted @ 2013-08-15 00:42 zhsl 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2926 题意:求5维空间的点集中的最远曼哈顿距离。。 降维处理,推荐2009武森《浅谈信息学竞赛中的“0”和“1”》以及《论一类平面点对曼哈顿距离问题》。 1 //STATUS:C++_AC_735MS_184KB 2 #inc... 阅读全文
posted @ 2013-08-14 17:42 zhsl 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4669 题意:给一串数字连乘一个环,求连续的子串中组成的新的数字能被K整除的个数。 首先容易想到用DP来解,f[i][j]表示以第 i 个数字结尾的所有前缀数中,余数为 j 的个数,那么Σ(f[i][0])就是答案。 f[i][ j*10^len(num[i])+num[i] ]+=f[i][j]。 但是这个要处理环的问题,所以我们要保证每次求的f[i][j]长度不能超过n。所以我们需要在转移f[i][j]的时候,要求出以当前数字num[i]开始的长度为n的数的余数r[i],那么在统计完... 阅读全文
posted @ 2013-08-14 17:18 zhsl 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 原帖地址:http://www.oschina.net/news/43167/130-essential-vim-commands从 1970 年开始,vi 和 vim 就成为了程序员最喜爱的文本编辑器之一。5年前,我写了一个问自己名为 “每个程序员都应该知道的 100 个 vim 命令” 这次算是之前那篇文章的改进版,希望你会喜欢。基础:e filenameOpenfilenamefor edition:wSave file:qExit Vim:q!Quit without saving:xWrite file (if changes has been made) and exit:sa.. 阅读全文
posted @ 2013-08-14 15:08 zhsl 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4671 假设是3 m,首先按照第一列按照1 2 3 1 2 3 1...排下去,然后个数就是一个 (m/3)+1,(m/3)+1....m/3的形式,题目要求不相差1,那么对于第二列serve直接从后往前就可以了,总可以保证不想差1,最多两列就可以解决。。 1 //STATUS:C++_AC_31MS_272KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #in... 阅读全文
posted @ 2013-08-13 21:56 zhsl 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666 题意:动态的增加或者删掉k维空间的点,求每次操作后剩下的点集中的最大的麦哈顿距离。 如果是一维情况很好做,直接用个数据结构来维护就行了,那么多维情况怎么办?其实多维情况是可以降到一维情况的。考虑二维的情况:|xi-xj|+|yi-yj|,我们展开绝对值之后,就可以得到四个式子:(xi+yi)-(xj+yj), (-xi+yi)-(-xj+yj), (xi-yi)-(xj-yj), (-xi-yi)-(-xj-yj),根据不等式 |x|+|y|>=x+y,那么我们对所有的点求出(xi+. 阅读全文
posted @ 2013-08-13 21:48 zhsl 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3380 题意:有m种不同的元素,每种元素都有n种不同的相位,现在假设有每种元素各一个,其相位是等概率随机的。如果几个元素的相位相同,那么帕琪就可以把它们组合发动一个符卡(Spell Card)。现在问帕琪能够发动等级不低于l,即包含l个相同相位的不同元素的附卡的概率。 首先所有的总数是n^m,然后只要求满足情况的数目了,对于 l >m/2我们可以直接用组合数来求的,即n*Σ( C(m,i)*(n-1)^(m-i) ),如果 l m){27 ... 阅读全文
posted @ 2013-08-12 20:37 zhsl 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=495 题意:有n个盒子,每个盒子里面放了一个奖品,m个人轮流去选择盒子,如果盒子里面有奖品,就把奖品拿走,盒子留下,否则直接走人。求最后被抽走的奖品数期望。。。 如果直接考虑用期望来建立DP,复杂度都很高,而且题目精度过高。换一个角度思考,考虑每个奖品不被拿走的概率(1/n)^m,那么不被拿走的期望就是n*(1/n)^m,则拿走的期望n-n*(1/n)^m,复杂度O(1)。还可以考虑f[i]表示第 i 个人拿到奖品的概率,那么1-f[i]就是没有拿到奖品的概率,是对立事件,则f[ 阅读全文
posted @ 2013-08-12 20:21 zhsl 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3071 题意:有2^n只足球队打比赛,编号1和2,3和4等进行淘汰制,胜利的进入下一轮接着淘汰,求最后哪支球队赢的概率最大。 简单题概率DP,画一颗树就知道方程了,f[i][j]表示第 i 轮第 j 只球队获胜的概率,则f[i][j]=Σ( f[i-1][k] ),k为第 j 只球队能遇见的所有球队。 1 //STATUS:C++_AC_94MS_320KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8... 阅读全文
posted @ 2013-08-12 19:52 zhsl 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2262 题意:LL在一个迷宫里面转,每次走向周围能走的点的概率都是一样的,现在LL要随机的走到canteen哪里,求期望。 这个是带环的求期望问题,并且没有什么特殊性,只有列出方程,然后gauss消元了。首先用BFS求出能走的点,并判断能否走到canteen。然后列出期望方程,E[i]=Σ( E[j]*p[j] ) +1。然后好求了,注意题目中有多个canteen。。。 1 //STATUS:C++_AC_437MS_700KB 2 #include 3 #include 4 #... 阅读全文
posted @ 2013-08-11 17:15 zhsl 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4418 题意:简单来说就是给你1个环(n - 1 , n - 2 …… 0 ,1 , 2 , 3 …… n - 2)。你可以走1 - m步每步的概率是给定的。。保证sum(pk)(1 n - 1 ,d = 1代表从n - 1 -> 0。 由于这里同一个点每次转移的方向是不一样的,因此要进行拆点,即0, 1, 2, 3 -> 0, 1, 2, 3, 4, 5,4和5分别表示2和1这个点的相反的方向。然后做一遍BFS,看是否能到达Y点,如果能的话,列出期望方程:E[i]=Σ( (E[j]+k 阅读全文
posted @ 2013-08-11 14:53 zhsl 阅读(448) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 25 下一页