-------dp-------
文章平均质量分 65
Ren_Ivan
衡中oier,fight for furture
展开
-
[Poi2014]FarmCraft 树状dp
对于每个点,处理出走完其子树所需要的时间和其子树完全下载完软件的时间 易证,对于每个点的所有子节点,一定优先选择差值大的来给后面的时间 树规+贪心。 #include #include #include #include #include #include #define N 500005 using namespace std; int e=1,head[N],fa[N],n; int a原创 2017-08-01 21:26:58 · 297 阅读 · 0 评论 -
Poi2010 Monotonicity 2
树状数组优化dp 可以证明最优解一定是通过之前的最优转移过来的,所以每一个点只需要保存以该节点为结尾的最长长度即可 对于不同符号,等于号维护数组,大于小于维护树状数组#include #include #include #include #include #define N 500005 using namespace std; int n,m,a[N],f[N],ans,c[2][2*N],原创 2017-07-27 21:07:46 · 511 阅读 · 0 评论 -
bzoj3594 方伯伯的玉米田 树状数组优化dp
f[i][j]表示到第i位,使用了j次机会的最长不下降子序列长度 转移:f[i][j]=max(f[x][y])+1; x 所以根据后两个条件维护二维树状数组求最值 #include #include #include using namespace std; int n,m,k; int a[10005],c[505][5505],f[10005][505]; int lowbit(in原创 2017-07-14 21:40:38 · 428 阅读 · 0 评论 -
bzoj 1592 dp
就是dp啊 f[i][j]表示到第i位,最后一位高度是j的最小花费 转移::f[i][j]=minn(f[i-1][k])+abs(a[i]-num[j]);(k #include #include #include #include #include #include using namespace std; int f[2005][2005],n,a[2005],b[2005],nu原创 2017-08-07 06:28:45 · 437 阅读 · 0 评论 -
bzoj 3126 单调队列优化dp
能转移的最左是其左边完整区间的最右左端点,最右是能覆盖它的最左左端点-1 #pragma GCC optimize ("O3") #include #include #include #include #include #define N 200005 using namespace std; int l[N],r[N],n,m,f[N],q[N]; int read(){ int a=0;c原创 2017-09-24 07:48:54 · 396 阅读 · 0 评论