首页 > 其他分享 >Knapsack 2

Knapsack 2

时间:2023-12-24 13:35:49浏览次数:25  
标签:const int long 体积 Knapsack 1e5 dp

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;
} 

标签:const,int,long,体积,Knapsack,1e5,dp
From: https://www.cnblogs.com/yufan1102/p/17924286.html

相关文章

  • Solving 0/1 knapsack problem with dynamic programming (英语课汇报)
    Solving0/1knapsackproblemwithdynamicprogrammingIntroduction0/1knapsackproblemsAlongtimeago,anexplorerwenttoanislandwherethereweretreasures,buthisknapsackcouldonlyholdamaximumweightof\(W\).Eachtreasurehaditscorresp......
  • Gym101064L The Knapsack problem
    CF传送门发现物品的体积很小,尝试从此处入手。设\(K\)为最大的物品体积。把背包体积\(m\)分成差不超过\(K\)的两部分,然后合并。这样需要求出\(f(\frac{m}{2}-K\sim\frac{m}{2}+K)\)。递归地,可以发现需要求出\(f(\frac{m}{2^k}-K\sim\frac{m}{2^k}+K)\)。最......
  • ABC159F Knapsack for All Segments
    原题翻译\(O(n^3)\)的朴素\(dp\)是simple的考虑定义一个子序列是”好的子序列”当且仅当\(a_l\)和\(a_r\)都在子序列中,容易发现他对答案的贡献是包含他的区间,即\(l\times(n-r+1)\)先说我自己的做法:设\(dp_{i,j}\)表示强制以\(i\)结尾,子序列和为\(j\)的......
  • unbounded knapsack problem
    DescriptionUnboundedKnapsackProblemThereare$N$kindsofitemsandaknapsackwiththecapacityof$V$,eachitemhasunlimitedpiecesavailable.Thevolumeofthe$i$-thitemis$v_i$,andvalueis$w_i$.Pleasesolvewhichitemscanbeputintothe......
  • 动态规划例子 -- 背包问题 knapsack
    C++:使用动态规划算法的函数intknapsack(intW,intwt[],intval[],intn){intdp[n+1][W+1];//报错for(inti=0;i<=n;i++){for......
  • [AtCoder] F - Knapsack for All Subsets
    ProblemStatement dp[i][j]:thenumberofsubsetsofA[0,i]whosesumisj.dp[0][0]=1,thereisonly1wayofnotpickinganythingfromanemptyarrayt......
  • Educational DP Contest E - Knapsack 2 (01背包)
    https://atcoder.jp/contests/dp/tasks/dp_e题目大意:有N个物品,编号为1,2,…,N。对于每个i(1≤i≤N),物品I的权重为wi,价值为vi。Taro决定从N件物品中挑选一些,用背包带回家......
  • Infinite Knapsack
    传送门(跟之前某道题很像)当\(x\)无限大时,相当于物品可以选实数个(不拘泥于整数个)。于是很自然地(也是因为价值是一维的,代价是二维的,肯定固定一维不变),把每种物品价值都变为......