P1510 精卫填海 题解
作者:互联网
#include<iostream> using namespace std; long long dp[45001]; int s[10001],t[10001]; int main() { int v,n,c; cin>>v>>n>>c; for (int i=1;i<=n;i++) { cin>>s[i]>>t[i]; } for (int i=1;i<=n;i++) { for (int j=c;j>=t[i];j--) { dp[j]=max(dp[j],dp[j-t[i]]+s[i]); } } if (dp[c]>=v) { for (int i=1;i<=c;i++) { if (dp[i]>=v) { cout<<c-i; break; } } } else { cout<<"Impossible"<<endl; } }
标签:10001,int,题解,P1510,long,精卫填海,dp 来源: https://www.cnblogs.com/smghj/p/16033113.html