DP成魔之路——梦开始的地方

DP手的诞生

DP是这样的,出题人只要出题就好了,而做题的就要想很多了

喜欢和自己博弈,所以我要选DP

我有一道DP,你要不试试

又菜又爱,码垛

关注我,教我彻底学会DP

DP题集收纳

背包------背不出来

三状态背包

目标状态有三,你要怎么用,用谁,转换方程怎么写

**Problem:**n个食物,每个食物有a,b两个属性,你的胃两个属性的最大值分别是x,y,问最多能糟踏多少食物(咬一口也算糟蹋了)?

传送门E - Maximum Glutton (atcoder.jp)

Ideas: (错误思路:正常来讲,我会直接把他当作一个普通的01背包,然后去贪心看看(分别用a,b属性对食物排序),果不其然wa了,后来就在想,用最小的替换掉大的,第i个物品作为二维数组变量1,a属性作为二维数组变量2,b属性作为二维数组的值1,个数作为值2,但是细想之后还是不对,因为用哪个来排序都行)(那就来说说正解:前文提到,二维数组有四个状态,但是b和个数谁来排序都不对,那么应该怎么做?前文是不是有个可有可无的变量呢?第几个物品,重要吗?好像,嗯...没用上啊那删掉,现在我总不能再拿b属性作为二维数组的变量1吧,那时间复杂度就超了,把个数当作变量1怎么样?然后只剩b数组作为值,斯,那这么说,如果个数能装到,并且使用a属性的时候让b属性尽可能小,那么,出现过的个数属性就是答案了!!!

理论形成,转换开始:

Code:

复制代码
#include <bits/stdc++.h>
#define int long long
#define endl "\n"

using namespace std;

const int N = 10010;

typedef long long LL;
typedef pair<int, int> PII;

int n;
int a[N], b[N];
int dp[100][N];
int x, y;

void solve() {
	cin >> n;
	cin >> x >> y;
	for(int i = 1; i <= n; i++) cin >> a[i] >> b[i];
	
	memset(dp, 0x3f, sizeof dp);
	dp[0][0] = 0;
	for(int i = 1; i <= n; i++) {
		for(int j = n; j; j--) {
			for(int k = a[i]; k <= x; k++) {
				if(dp[j - 1][k - a[i]] + b[i] <= y) dp[j][k] = min(dp[j][k], dp[j - 1][k - a[i]] + b[i]);
				
			}
		}
	}
	
	for(int i = n; i >= 0; i--) {
		for(int j = 0; j <= x; j++) {
			if(dp[i][j] <= 1e9) {
				cout << i + (i == n ? 0 : 1) << endl;
				return ;
			}
		}
	} 
}

signed main()
{
	ios::sync_with_stdio(false), cin.tie(0);
	cout.tie(0);
	
	int t = 1;
	// cin >> t;
	while(t--) {
		solve();
	}
}
相关推荐
明月_清风4 小时前
从二叉树到 B+ 树:一文搞懂工程中「树」的演化之道
数据结构·算法·go
渡我白衣4 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
hetao17338375 小时前
2026-09-01~09-04 hetao1733837 的刷题记录
c++·算法
Evand J5 小时前
【MATLAB例程,图像滤波5】 反谐波均值滑动窗口滤波(CHMF)图像降噪与质量评价,附代码下载链接
图像处理·算法·计算机视觉·matlab·均值算法·滑动窗口滤波·均值滑动
血小板要健康5 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
a187927218316 小时前
【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗
算法·leetcode·go·剪枝·回溯·n皇后·算法讲解
HugoStudio_SWAN7 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
青 春 记 忆8 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
阳明山水9 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技9 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算