
DP
ZGS_WZY
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【NOI2015】寿司晚宴 ---状压DP
怎么办啊。。。笔者太懒了不想写题解。。。#include<bits/stdc++.h>#define rep(i,j,k) for(int i=j;i<=k;i++)#define rep2(i,j,k) for(int i=j;i>=k;i--)#define ll long longusing namespace std;template<type...原创 2018-09-24 12:42:21 · 216 阅读 · 0 评论 -
【APIO2015】Bali Sculptures
题目链接算法: 首先有这样一个贪心策略:将答案转成二进制考虑,从高位到低位枚举,对于当前这一位,除非它在最优策略下只可能是1,否则我把这位设成0,沿着这个思路我们分两类考虑: (1)对于1<=A<=B<=N的数据,我们将答案从高位向低位枚举,设f[i][j]表示将前i个数分成j组的方案中,是否存在可以使当前这一位为0的方案(0为没有,1...原创 2019-03-11 19:22:08 · 254 阅读 · 0 评论 -
[SCOI2014]方伯伯的玉米田
题目链接算法: 为了保证DP的正确与方便,这里先提供一个结论:每次操作都一定要拔高第n棵玉米。 以下引用NS·YJD大佬的一篇博客的证明: 首先无论操作区间在哪里,如果区间两边存在玉米,那么这些玉米与区间内玉米拔高后的相对高度关系只有3种情况:1.原本区间内比它们高的玉米还是比它们高。2.原本区间内比它们矮的玉米不再比它们矮。3.原本...原创 2019-02-13 15:42:45 · 418 阅读 · 0 评论 -
【AHOI2009】中国象棋
题目链接算法: 由题意,每一行和每一列我们可以放至多两个炮,则我们设f[i][j][k]表示目前已放完前i行,在m列中有j列放了0个炮,有k列放了1个炮。然后我们分:不放炮、放一个炮{ 在j列中选一个,在k列中选一个 }和放两个炮{ 在j列中选两个,在k列中选两个,在j和k列中各选一个 },这几种情况转移状态即可。 (具体细节参考程序)Code:...原创 2019-02-09 14:07:22 · 252 阅读 · 0 评论 -
「网络流 24 题」最长递增子序列
题目链接算法: 对于第一问,设f[i]为以i这个位置为结尾的最长递增子序列的长度,一个O(n^2)的DP即可; 对于第二问,因为每个位置仅能选一次,我们可以把一个位置i拆成两个节点i1与i2,每一个i1各向对应的i2连一条无限流量的边,源点S向每一个f[i]=1的i的i1连一条流量为1的边,再由每一个f[i]=第一问答案的节点i的i2向汇点T连一条流...原创 2019-02-09 13:54:51 · 371 阅读 · 0 评论 -
【BZOJ1040】[ZJOI2008]骑士
题目链接算法: 对于每一个骑士,我们由他痛恨的骑士向他自己连一条边,由此整个图组成了若干个联通块,而每个联通块正式一个基环树,则答案就是两条边只选一个点的权值之和的最大值,那么我们设f[i][0\1]表示i这个节点选\不选的最优战斗力,那么对于每一个联通块,我们可以找出环上的某一条边,暂时把它隔开,分两种情况,一种选左边那个骑士,另一种选右边那个骑士,分别在树上DP,然后...原创 2019-02-08 20:29:37 · 383 阅读 · 0 评论 -
[HAOI2006]均分数据
题目链接 经过了14次的提交,终于正大光明的把本题A掉了。。。。算法: 主要思想是模拟退火,具体操作就是,我们对于每一个生成的排列,用连续分组DP处理此情况下的最小均方差。 dp[i][j]表示前i个数中分j组的最小均方差,dp[i][j]=min(dp[i][j],dp[k-1][j-1]+prefix[i]-prefix[j...原创 2018-10-24 21:37:09 · 296 阅读 · 0 评论 -
【NOIP2015】子串
题目链接算法: 鸽鸽鸽了。。。。。 Code:#include<bits/stdc++.h>#define rep(i,j,k) for(int i=j;i<=k;i++)#define mo 1000000007using namespace std;template<typename T> void chkmo(T ...原创 2018-10-26 22:40:51 · 389 阅读 · 1 评论 -
【模板】最长公共子序列
题目链接算法又被鸽鸽鸽了。。。Code:#include<bits/stdc++.h>#define rep(i,j,k) for(int i=j;i<=k;i++)#define rep2(i,j,k) for(int i=j;i>=k;i--)using namespace std;template<typename T> void c...原创 2018-10-29 19:35:25 · 174 阅读 · 0 评论 -
玩具
题目链接 翻译题意:一开始只有一个点,做n-1次操作:在已生成的点中等概率的挑一个。求最后生成的树的高的期望。 我们可以设F[i][j]表示由i个点组成高不超过j的树的概率,G[i][j]表示由i个点组成高不超过j的森林的概率,此时我们考虑:在任意一种组成森林的方案中,我们用一个点连向森林中每一棵树的根节点,就正好对应了一种由i+1个点组成高不超过j+1的树的方...原创 2019-05-14 19:27:07 · 277 阅读 · 0 评论