摘要: 优先级不同,只有两堆。把两堆折在一起,树状数组或线段树维护。代码。。。不想再打了 阅读全文
posted @ 2013-05-20 20:57 hsuppr 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 位置降序,速度升序,维护单调性。最后按编号排序输出即可。代码不传了。(考试时的代码也没拷下来...) 阅读全文
posted @ 2013-05-20 20:53 hsuppr 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 很纠结的概率dp。我太菜了,考场没做出来 - -|f[i][j] 代表 还剩i个人,庄家是j的概率。(这个j是j被踢出后,后边的j + 1移动过来的)因为有一个人要留下来,所以他不能被踢出。轮换一下编号就好做了一些。(把应该留下来的人轮换成0)所以就是f[i][0] = f[i][i];(0不可以被踢出,貌似说过了...)/** * Problem:JLOI2013-game * Author:Shun Yao * Time:2013.5.20 * Result:Accepted * Memo:DP */#include <cstring>#include <cstdlib& 阅读全文
posted @ 2013-05-20 19:59 hsuppr 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 题意好难懂啊/** * Problem:POJ1837 * Author:Shun Yao * Time:2013.4.29 * Result:Accepted * Memo:DP */#include<iostream>#include<cstring>#include<cstdlib>#include<cassert>#include<cstdio>#include<cmath>#include<ctime>#include<algorithm>using namespace std;long 阅读全文
posted @ 2013-05-20 16:50 hsuppr 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题意:用逗号划分数字串,使最后一个子串最小,且开头的子串尽可能大。方法:两次DP1. 求出最后一个子串的值状态:从前向后DP,dp[i]代表在0~i的子串中,dp[i]~i所代表的子串是最小的最后子串。转移:枚举dp[i]的值由j-1~0,如果dp[i]~i所代表的子串比dp[i-1]~i-1的子串所代表的值大,则dp[i]~i是最小的最后子串。2. 求出题目要求的序列状态:从后向前DP,dp[i]代表在i~len-1的子串中,i~dp[i]所代表的子串是最大的第一个子串。转移:枚举dp[i]的值由i~len-1,如果i~dp[i]所代表的子串比dp[i]+1~dp[dp[i]+1]的子串大, 阅读全文
posted @ 2013-05-20 11:59 hsuppr 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 额。是单整点集。一开始没看到。。还算好做,树形dp。/** * Problem:POJ1192 * Author:Shun Yao * Time:2013.5.20 * Result:Accepted * Memo:DP */#include <cstring>#include <cstdlib>#include <cstdio>long abs(long x) { return x < 0 ? -x : x;}const long Maxn = 1005;long n, ans, now, f[Maxn];char visited[Maxn];cla 阅读全文
posted @ 2013-05-20 08:00 hsuppr 阅读(186) 评论(0) 推荐(0) 编辑