#include<bits/stdc++.h> using namespace std; //#pragma GCC optimize(2) #define endl '\n' const int N=2e6+10; typedef long long ll; ll ans=0,n1,m1; ll t=0,s1=0,s2=0,s3=0,max1=0,max2=0,w,min1=100000000,sum=0,n,m,i,j,k=0; inline int read() { bool sym=0; int res=0; char ch=getchar(); while(!isdigit(ch))sym |=(ch =='-'),ch=getchar(); while(isdigit(ch)) res =(res<<3)+(res<<1)+(ch^48),ch=getchar(); return sym ? -res : res; } void print(int x) { if(!x)return; print(x/10); putchar(x%10+'0'); } int isPrime(int n) { float n_sqrt; if(n==1) return 0; if(n==2 || n==3) return 1; if(n%6!=1 && n%6!=5) return 0; n_sqrt=floor(sqrt((float)n)); for(int i=5; i<=n_sqrt; i+=6) { if(n%(i)==0 | n%(i+2)==0) return 0; } return 1; } ll hh[1007],tt[1008],v[1008],dp[1005][1006],ass[1007][1007]; int main() { ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); ll h,t; cin>>n; for(i=1; i<=n; i++) { cin>>hh[i]>>tt[i]>>v[i]; } cin>>h>>t; for(i=1; i<=n; i++) { for(j=h; j>=hh[i]; j--) { for(k=t; k>=tt[i]; k--) { if(dp[j-hh[i]][k-tt[i]]+1>dp[j][k]) { dp[j][k]=dp[j-hh[i]][k-tt[i]]+1; ass[j][k]=ass[j-hh[i]][k-tt[i]]+v[i]; } if(dp[j-hh[i]][k-tt[i]]+1==dp[j][k]) { ass[j][k]=min(ass[j][k],ass[j-hh[i]][k-tt[i]]+v[i]); } } } } /*for(i=1;i<=h;i++){ for(j=1;j<=t;j++){ ans=max(ans,dp[i][j]); } }*/ cout<<ass[h][t]; } //mio lover
利用二位费用找出最大人数,then 用time数组找最小time
P1509 找啊找啊找GF 背包 二维费用
最新推荐文章于 2024-09-27 17:57:19 发布