- 博客(6)
- 收藏
- 关注
原创 背包问题例题
01背包 有N种物品和一个容量为V的背包。每件物品只能使用一次 第i件物品的体积是v[i],价值是w[i] 求解将哪些物品放入背包,可使物品的总体积不超过背包容量,且总价值最大。输出最大价值 例1: 关键: 定义Fij为考虑前i件物品,空间为j时的总价值 二维时:依此枚举考虑前n件物品(从空间为1到最大空间) 一维时:依此考虑第一件物品到最后一件物品(空间从最大到此物品的空间) #include <iostream> using namespace std;
2021-12-26 20:18:18
844
原创 动态规划 区间模型 luogu:1090 POJ:2955 11.17
区间DP,就是在区间上DP,先求出小区间的DP得到最优解,再去得到大区间的最优解。 一般状态为设f[i][j]为区间[i,j]的最优解,一般f[i][j]都可以用[i,j]的子区间的最优解得到。 例:luogu1090.合并果子 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G - 洛谷 设计状态: 用f[i][j]表示合并(i,j)区间内果子产生的最小代价。 转移方程: 因为合并后[i,j]就变为了一堆,因此在合并之前一定是两堆。我们可.
2021-11-16 22:06:01
390
原创 POJ3486 (动态规划的无后效性)
Computers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2580 Accepted: 1028 Description Everybody is fond of computers, but buying a new one is always a money challenge. Fortunately, there is always a convenient way to deal
2021-11-16 17:01:08
416
原创 动态规划 线性模型 Leetcode.300 POJ3486
线性指的是状态的排布是线性的,最长单调上升子序列为经典的线性模型 leetcode300:最长递增子序列 用f[i]表示以a[i]结尾的最长上升子序列问题 计算f[i]的时候,只需要考虑f[1],f[2],...,f[i-1]是否能够转移 状态转移方程:f[i]=max{f[j]+1|1<=j<i,a[i]<a[j]} ,并将此集合称为决策允许集合,我们只能从允许的j里找f[j]+1来更新f[i]. 代码: class Solution { public: .
2021-11-12 18:22:42
319
原创 动态规划(1)
常见的动态规划类型: 线性模型 区间DP 背包DP 数位DP 状态压缩DP 树状DP 常见的DP优化方法 滚动数组优化 矩阵乘法优化 斜率优化 四边形不等式优化 决策单调性优化 数据结构优化 动态规划基本概念 1.阶段和阶段变量: 将问题的全过程恰当地划分为若干个相互联系的阶段 阶段的划分一般根据时间和空间的自然特征划分 阶段的划分要便于把问题转化为多阶段决策问题 2.状态转移方程: ...
2021-11-11 22:09:22
588
原创 树状数组1-POJ 2352 题型:左下方点的个数
题目描述:对于每一个点,对应一个等级,其等级为其左下角点的个数。 方法:由于输入时在y坐标递增的前提下,x坐标也是递增的。所以我们用扫描线的方法。 从小到大扫描y[i],每次都把y<=y[i]的点加入一个集合S。再在集合s里找x<=x[i]的个数。 对于每一个点(x[i],y[i]),其左下角的点的个数等于集合Si里满足x<=x[i]的个数。 实现:只需要用树状数组来维护集合S里的数,插入一个数x,就在数组x位置加一add(x,...
2021-11-08 19:49:45
125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅