HDU Fate 未完成
#include <bits/stdc++.h> using namespace std; const int N = 10000; int n; unsigned long long res=0; struct Bag{ int rnval; int jyval; int weight; }bag[N]; bool bmp(Bag a,Bag b){ if(a.rnval<b.rnval){ return a.jyval<b.jyval; } if(a.rnval==b.rnval) return a.jyval>b.jyval; } struct Dp{ int dp,p; }dp[N]; bool bmp2(Dp a, Dp b){ return a.p<b.p; } bool is_out; int kind,rn,jy,p[N]; int main(){ ios::sync_with_stdio(false); while(cin>>jy>>rn>>kind>>n){ for (int i = 1; i <= rn; i++) { dp[i].dp=0; dp[i].p=0; } is_out=0; for (int i = 1; i <= kind; i++) { cin>>bag[i].jyval>>bag[i].rnval; } sort(bag+1,bag+kind+1,bmp); // for (int i = 1; i <= kind; i++) cout<<bag[i].jyval<<bag[i].rnval<<endl; for (int i = 1; i <= jy; i++) { for (int j = bag[i].rnval;j<=rn;j++) { // cout<<dp[j-bag[i].rnval].dp+bag[i].jyval<<" "; if(dp[j].dp>=jy) dp[j]=dp[j]; else{ if(dp[j-bag[i].rnval].dp+bag[i].jyval>dp[j].dp){ dp[j].dp=dp[j-bag[i].rnval].dp+bag[i].jyval; dp[j].p=dp[j].p+dp[j-bag[i].rnval].p+1; } else dp[j]=dp[j]; } // cout<<dp[j]<<endl; } //cout<<endl; } sort(dp+1,dp+jy+1,bmp2); for (int i = 1; i <= jy; i++) { // cout<<dp[i].dp<<" "<<dp[i].p<<endl; if(dp[i].dp>=jy&&dp[i].p<=n&&is_out==0){ cout<<rn-dp[i].p<<endl; is_out=1; } } if(is_out==0) cout<<"-1"<<endl; /* cout<<"max="<<dp[rn]<<endl; cout<<p[jy]<<endl; */ } return 0; }
#include <bits/stdc++.h> using namespace std; const int N = 1000; int n; unsigned long long res=0; struct Bag{ int rnval; int jyval; int weight; }bag[N]; bool bmp(Bag a,Bag b){ if(a.rnval<b.rnval){ return a.jyval<b.jyval; } if(a.rnval==b.rnval) return a.jyval>b.jyval; } struct Dp{ int dp,p; }dp[N]; bool bmp2(Dp a, Dp b){ return a.p<b.p; } bool is_out; int kind,rn,jy,p[N]; int main(){ ios::sync_with_stdio(false); while(cin>>jy>>rn>>kind>>n){ for (int i = 1; i <= N; i++) { dp[i].dp=0; dp[i].p=0; } is_out=0; for (int i = 1; i <= kind; i++) { cin>>bag[i].jyval>>bag[i].rnval; } sort(bag+1,bag+kind+1,bmp); // for (int i = 1; i <= kind; i++) cout<<bag[i].jyval<<bag[i].rnval<<endl; for (int i = 1; i <= jy; i++) { for (int j = bag[i].rnval;j<=rn;j++) { // cout<<dp[j-bag[i].rnval].dp+bag[i].jyval<<" "; if(dp[j].dp>=jy) dp[j]=dp[j]; else{ if(dp[j-bag[i].rnval].dp+bag[i].jyval>dp[j].dp){ dp[j].dp=dp[j-bag[i].rnval].dp+bag[i].jyval; dp[j].p=dp[j-bag[i].rnval].p+1; } else dp[j]=dp[j]; } // cout<<dp[j]<<endl; } //cout<<endl; } sort(dp+1,dp+jy+1,bmp2); for (int i = 1; i <= jy; i++) { // cout<<dp[i].dp<<" "<<dp[i].p<<endl; if(dp[i].dp>=jy&&dp[i].p<=n&&is_out==0){ cout<<rn-dp[i].p<<endl; is_out=1; } } if(is_out==0) cout<<"-1"<<endl; /* cout<<"max="<<dp[rn]<<endl; cout<<p[jy]<<endl; */ } return 0; }
#include <bits/stdc++.h> using namespace std; const int N = 10000; int n; unsigned long long res=0; struct Bag{ int rnval; int jyval; int weight; }bag[N]; bool bmp(Bag a,Bag b){ if(a.rnval<b.rnval){ return a.jyval<b.jyval; } if(a.rnval==b.rnval) return a.jyval>b.jyval; } struct Dp{ int dp,p; }dp[N]; bool bmp2(Dp a, Dp b){ return a.p<b.p; } bool is_out; int kind,rn,jy,p[N]; int main(){ ios::sync_with_stdio(false); while(cin>>jy>>rn>>kind>>n){ for (int i = 1; i <= 1000; i++) { dp[i].dp=0; dp[i].p=0; } is_out=0; for (int i = 1; i <= kind; i++) { cin>>bag[i].jyval>>bag[i].rnval; } sort(bag+1,bag+kind+1,bmp); // for (int i = 1; i <= kind; i++) cout<<bag[i].jyval<<bag[i].rnval<<endl; for (int i = 1; i <= jy; i++) { for (int j = bag[i].rnval;j<=rn;j++) { // cout<<dp[j-bag[i].rnval].dp+bag[i].jyval<<" "; if(dp[j].dp>=jy) dp[j]=dp[j]; else{ if(dp[j-bag[i].rnval].dp+bag[i].jyval>dp[j].dp){ dp[j].dp=dp[j-bag[i].rnval].dp+bag[i].jyval; dp[j].p=dp[j-bag[i].rnval].p+1; } else dp[j]=dp[j]; } // cout<<dp[j]<<endl; } //cout<<endl; } sort(dp+1,dp+jy+1,bmp2); for (int i = 1; i <= jy; i++) { // cout<<dp[i].dp<<" "<<dp[i].p<<endl; if(dp[i].dp>=jy&&dp[i].p<=n&&is_out==0){ cout<<rn-dp[i].p<<endl; is_out=1; } } if(is_out==0) cout<<"-1"<<endl; /* cout<<"max="<<dp[rn]<<endl; cout<<p[jy]<<endl; */ } return 0; }
本文在博客园发布,作者:limited_Infinite,转载请注明原文链接:https://www.cnblogs.com/limitedInfinite/p/14697081.html