区间DP
Zolrk
这个作者很懒,什么都没留下…
展开
-
能量项链 NOIP2006 Codevs1154
#include <cstdio>#include <algorithm>#include <cstring>int n,e,a[300],f[210][210],ans;inline void read(int &x) { x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar();原创 2017-07-21 09:27:29 · 374 阅读 · 0 评论 -
石子归并 【区间DP】 Codevs1048
关于区间DP,推荐先看看最优矩阵链乘 用a[n]表示从1到n的全部石子重量 用f(i,j)表示从i到j合并所需的最小代价 从状态的角度来思考,考虑最后一次归并后的状态是如何转移的原创 2017-07-19 13:05:02 · 295 阅读 · 0 评论 -
Noip 2003 加分二叉树 - 区间DP
1.把子树看作区间 2.枚举根 3.小区间转移到大区间,注意边界#include <algorithm>#include <iostream>#include <cstdio>using namespace std;#define debug(x) cerr << #x << "=" << x << endl;const int MAXN = 50;long long an原创 2017-10-31 11:36:49 · 255 阅读 · 0 评论 -
NOI1995 石子合并 - 区间DP入门
区间DP虽然入门十分简单,但是也需要记住一些步骤 方程形式上一般是f(l,r)=max(f(l,k)+f(k+1,r))+d(l,r)f(l,r)=max(f(l,k)+f(k+1,r))+d(l,r)f(l,r)=max( f(l,k) + f(k+1,r) ) + d(l,r) (k属于l到r-1) 转移有这几步 枚举区间长度 枚举左端点,结合区间长度确认右端点 枚举区...原创 2018-06-30 15:53:16 · 342 阅读 · 0 评论 -
洛谷P1220 关路灯 - 区间DP
说是区间DP还不如说是以区间为状态的DP 考虑问题进行的过程中有什么单调连续重叠的东西 会发现黑掉的灯连在一起且每次行动黑掉一个 考虑到老张的位置对转移有影响,结合数据范围可知这不只是二维DP暴力30分做法…dfs求全排列,为什么不用next_permutation呢。。。因为那样不能剪枝只有20分。。。#include <algorithm>#include <i...原创 2018-08-14 16:45:16 · 285 阅读 · 0 评论 -
洛谷P2858 [USACO06FEB] 奶牛零食 Treats for the Cows - 区间DP
其实不是典型的区间DP。。。顶多拿区间当状态 这题的状态可能有点难想,但是可以想象到在问题过程中有个东西在单调变化(而且“重叠”,“可转移”)那么由DP的定义可以知道这就是我们要的状态了:区间 设flr表示糖果目前剩下l ~ r区间没被拿走,然后反着进行过程,把糖果一个个放回去,最后放满#include <algorithm>#include <iostream>...原创 2018-08-20 20:11:12 · 183 阅读 · 0 评论