P1060 [NOIP2006 普及组] 开心的金明 题解

思路

01背包模版题,唯一不同的是加了一个条件就是价格与重要度的乘积。

转移方程为:dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);
这里加了滚动数组优化。

代码

#include<bits/stdc++.h>
#define ll long long
#define ld long double
using namespace std;
inline void read(int &x) {
	x=0;
	short flag=1;
	char c = getchar();
	while(c<'0'||c>'9') {
		if(c=='-')flag=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9') {
		x=(x << 3)+ (x << 1)+(c ^ 48);
		c=getchar();
	}
	x*=flag;
}
inline void write(int x) {
	if(x<0) {
		putchar('-');
		x=-x;
	}
	if(x>9)
		write(x/10);
	putchar(x%10+'0');
}
int n,m,v[100],w[100],dp[30002];
int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
	cin>>m>>n;
	for(int i=1;i<=n;i++){
		cin>>w[i]>>v[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=m;j>=w[i];j--){
			dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);//唯一不同点:价格与重要度的乘积。
		}
	}
	cout<<dp[m];//输出
	return 0;
}

posted @   扶桃o  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示