dp
文章平均质量分 63
wbysr
这个作者很懒,什么都没留下…
展开
-
bsoj1374字串距离
简单的dp#include#includeusing namespace std;int f[205][205];int main(){ int i,j,p,q; string m,n; cin>>m>>n; p=m.length(); q=n.length(); n=' '+n; m=' '+m; for(i=1;i<=原创 2013-12-29 17:28:17 · 645 阅读 · 0 评论 -
树形dp求树的重心 poj1655
本来是为了写树分治才写这个题的没想到竟然浪费了好长时间狂wa不止原来前向星的数组要开两倍。。。第一次用前向星真是光荣牺牲了。。。dp很简单先DFS一次,求出以每个节点为根的子树的节点个数s[i].设f[i]表示去掉i后,余下的各个子树结点个数的最大值.f[i]=max(n-s[i],max{s[j]}). (j为i的儿子).然后输出f[i]最小的原创 2014-03-25 16:33:28 · 895 阅读 · 0 评论 -
bzoj1786
显然填的数是不降的。。。然后把-1都扣出来,f[i][j]表示前i个-1填j的逆序数然后分别对与每个点求出来他前面的比他大的和后面的比他小的数就可以了#include#include#include#include#define MAX 10009#define rep(i,j,k) for(int i=j;i<=k;i++)#define inf 0x7fffffff原创 2014-03-31 21:20:43 · 668 阅读 · 0 评论 -
dp+树状数组 bzoj1264 AHOI2006基因匹配
bzoj1264 AHOI2006基因匹配用树状数组维护区间前缀最大值优化LCS原创 2014-03-30 11:40:32 · 1140 阅读 · 0 评论 -
树形dp 基环树直径 bzoj1791 ioi2008island
这个题真的好麻烦啊。。。就是给一堆基环树然后求出他们的直径的和我们首先不考虑环,然后对于每个点求出他所能走到的最大深度,然后缩点,就成了一个面包圈一样的环了然后脱环成链直接用单调队列dp就可以了队列中维护dp的决策,由于决策是有单调性的。。。#include#include#include#include#include#define MAX原创 2014-03-27 21:24:41 · 2287 阅读 · 0 评论 -
bzoj1021
这个题写了三个小时。。。。太洋务了最近。。。估计是因为那个计算几何闹得。。。这个题大概就是2*3一共6中情况, 分别是一个人给另外两个或者是两个人给一个人,那么用ijk分别表示对于面值是i,a有j,b有k的方案数然后用队列暴力转移就可以#include#include#include#include#include#include#define inf 0x7f原创 2014-02-27 20:56:28 · 1177 阅读 · 0 评论 -
树形dp bzoj1017
这题要是自己想根本想不出来啊。。。。没办法只能看qyf代码。。。。不过早晨还是用20分钟理解了。。。真的这种题做不了#include#include#include#include#include#define pb push_back#define read(x) scanf("%d",&x);#define MAX 2100using namespace std;原创 2014-02-25 05:23:33 · 1074 阅读 · 0 评论 -
斜率优化bsoj3733
靠因为边界情况的原因调了一个小时。。。这么水的题。。。#include#include#include#include#define MAX 500000+90using namespace std;int n,m,f[MAX],a[MAX],s[MAX],q[MAX];int tail,head;double gx(int x,int y){ return (f[x原创 2014-02-21 15:38:27 · 684 阅读 · 0 评论 -
noi2007货币兑换 cdq分治优化dp方程
有好多类似的论文我就不多说了。。。。靠靠靠忍不住爆粗口,把L写成了1调了两个小时!!太煞笔不解释。。。#include#include#include#include#include#define eps 1e-9#define inf 1e9#define MAX 120000 using namespace std; int n,stack[MAX];doubl原创 2014-01-30 13:45:20 · 983 阅读 · 0 评论 -
bzoj1651
靠靠靠被水题虐了。。来石家庄的第一题,06年的金组真水。。。很简单的dp,自己想的的解法似乎虐标程了。。。#include#include#include#include#define MAX 2009using namespace std;int n,a[MAX][MAX],f[MAX][MAX];int main(){ memset(a,0,sizeof(a));原创 2014-01-19 18:28:08 · 751 阅读 · 0 评论 -
bsoj2169
话说今天没事干一直写dp。。。。。一开始看见还是挺吓人的。。。#include#include#include#include using namespace std; int w; int main(){ scanf("%d",&w); while(w--) { int n,m; scanf("%d%d",&n,&m); int up[209],do原创 2014-01-01 20:52:01 · 957 阅读 · 0 评论 -
最长公共子序列的nlogn算法——bsoj1139
#include#include#include#include using namespace std; int n,i,f[100000+9],a[100000+9],b[100000+9];int x;int main(){ while(cin>>n) { for(int i=1;i<=n;i++) { scanf("%d",&x); a[x]=i; }原创 2014-01-01 17:40:26 · 1165 阅读 · 0 评论 -
scoi2004&&bsoj1084
这么老的题估计也只有xinyue能找到。。目测以前的scoi都不到现在的提高组难度啊。。。但是还是因为我太水了所以第一次只有40分,首先没考虑一段可以被分成好多段的情况只是考虑了二分的情况。。其次,没有注意到题目中说的是最少也就是可以多了。。。。就这么多,实在是太水了我。。。#include#include#include#includeusing namespace std原创 2014-01-01 09:21:47 · 835 阅读 · 0 评论 -
bsoj2234 最长上升子序列nlogn算法
唉今天是2014年的最后一天,照例把所有时间都用在信息上,没有带任何作业回家,不知道明天要补多少作业。。似乎只有三张卷子而已。。感觉今天真的很浮躁,我都不知道自己想干什么,看题也看不进去,比赛录像也不想看,想去打台球又觉得确实太过分。。真纠结啊我擦今天下午在自习室洋务了半天,看xinyue的dp讲义,学了一下nlogn的lis算法。。。。废话不说了。。。f表示长度为i的原创 2014-01-01 17:13:38 · 942 阅读 · 0 评论 -
scoi2008奖励关&&bzoj1076
今天晚上的第二个期望dp本题运用了位运算的思想,非常巧妙值得学习唉因为没有想到位运算结果还是看了题解和标程#include#include#include#includeusing namespace std;int k,n,v[500],num[900],d[900];double f[102][65536];int main(){ scanf("%d%d原创 2013-12-30 22:06:00 · 727 阅读 · 0 评论 -
scoi2008奖励关&&bzoj1076
今天晚上的第二个期望dp本题运用了位运算的思想,非常巧妙值得学习唉因为没有想到位运算结果还是看了题解和标程#include#include#include#includeusing namespace std;int k,n,v[500],num[900],d[900];double f[102][65536];int main(){ scanf("%d%d",原创 2013-12-30 21:48:39 · 1074 阅读 · 0 评论 -
poj 2096——基础期望dp
逆着递推求解 一个软件有s个子系统,会产生n种bug 某人一天发现一个bug,这个bug属于一个子系统,属于一个分类 每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n 问发现n种bug,每个子系统都发现bug的天数的期望。求解: dp[i][j]表示已经找到i种bug,j个系统的bug,达到目标状态的天数的期望原创 2013-12-30 20:52:21 · 643 阅读 · 0 评论