摘要: 优先级不同,只有两堆。把两堆折在一起,树状数组或线段树维护。代码。。。不想再打了 阅读全文
posted @ 2013-05-20 20:57 hsuppr 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 位置降序,速度升序,维护单调性。最后按编号排序输出即可。代码不传了。(考试时的代码也没拷下来...) 阅读全文
posted @ 2013-05-20 20:53 hsuppr 阅读(213) 评论(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 阅读(282) 评论(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 阅读(123) 评论(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 阅读(375) 评论(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 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 黑书p113上的题。我的思路:f[i][j]:i-j的最短规则序列长度f[i][j] = f[i][j - 1] + 2;当 s[j] == ')' && s[k] == '(' || s[j] == ']' && s[k] == '[' 时 f[i][j] <?= f[i][k - 1] + f[k + 1][j];/** * Problem:POJ1141 * Author:Shun Yao * Time:2013.5.19 * Result:Accepted * Memo:DP */#i 阅读全文
posted @ 2013-05-19 21:41 hsuppr 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 思路转自http://blog.csdn.net/bobten2008/article/details/4546528/*非常经典的一道DP(0,1背包)题,一个小小的错误让我调了几个小时,思路如下:1)首先对原图求补图,只有当原图中两个人i和j不同时认识时,在补图中rever[i][j] = rever[j][i] = true, 否则为false;这样做非常巧妙,通过这个转换将陌生的问题转换为了熟悉的问题2)利用dfs对补图求所有的连通分量,这样很容易看出,处于不同连通分量中的两个点肯定是可以组在一个队中的;在用dfs求连通分量的同时对同一个连通分量中的点进行0,1着色,这样当求得一个连通 阅读全文
posted @ 2013-05-19 16:47 hsuppr 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 解题报告见黑书p257。以下转自http://blog.csdn.net/sj13051180/article/details/6669737POJ1037, a decorative fence。这个题绝对不是入门级的,如果能独立做出来,那已经很NB了。嘿嘿,这一大段英文,先要把题目看懂就得费些气力。问题:有n个长度不同的木条,现在按照类似字典顺序(长度小的排在前)对这n个木条排序,求第m个图像是什么?设这n个木条分别为S1 S2 S3…Sn,它们的对应长度分别为1 2 3...n.对这n个木条进行排序,结果无非有下面n类: 以S1开头,以S2开头…以Sn开头。按照题目要求对这n类进行排序。 阅读全文
posted @ 2013-05-18 21:11 hsuppr 阅读(320) 评论(0) 推荐(0) 编辑