- 博客(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
807
原创 动态规划 区间模型 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
353
原创 POJ3486 (动态规划的无后效性)
ComputersTime Limit: 2000MS Memory Limit: 65536K Total Submissions: 2580 Accepted: 1028 DescriptionEverybody 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
371
原创 动态规划 线性模型 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
249
原创 动态规划(1)
常见的动态规划类型:线性模型区间DP背包DP数位DP状态压缩DP树状DP常见的DP优化方法滚动数组优化矩阵乘法优化斜率优化四边形不等式优化决策单调性优化数据结构优化动态规划基本概念1.阶段和阶段变量:将问题的全过程恰当地划分为若干个相互联系的阶段阶段的划分一般根据时间和空间的自然特征划分阶段的划分要便于把问题转化为多阶段决策问题2.状态转移方程:...
2021-11-11 22:09:22
536
原创 树状数组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
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人