Knapsack 2

image

这个题目的体积很大,但是价值却很小,最多是1e5,我们可以转变背包体积概念,把价值当作体积,然后体积当作 DP 值。

dp[i] 表示的是达到i价值所需的最小的体积

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
const int M=105;
int dp[N]; //代表i个钱的最小体积 
int t[M],w[M];
void solve(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>w[i]>>t[i];
	}
	memset(dp,0x3f,sizeof dp);
	dp[0]=0;
	for(int i=1;i<=n;i++){
		for(int j=100000;j>=t[i];j--){
			dp[j]=min(dp[j],dp[j-t[i]]+w[i]);
		}
	}
	for(int i=100000;i>=0;i--){
		if(dp[i]<=m){
			cout<<i;
			return;
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	//cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

本文作者:yufan1102

本文链接:https://www.cnblogs.com/yufan1102/p/17924286.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yufan1102  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.