标签:queue 循环 etc esc cbe inline cli size poj
题意:
有很多羊,每只羊有一个幽默度和智商,要选出一些羊,智商加幽默度总和最大,其中智商总和和幽默度总和都不能是负数。
1 #include<set> 2 #include<map> 3 #include<queue> 4 #include<stack> 5 #include<cmath> 6 #include<cstdio> 7 #include<cstring> 8 #include<iostream> 9 #include<algorithm> 10 #define RG register int 11 #define rep(i,a,b) for(RG i=a;i<=b;++i) 12 #define per(i,a,b) for(RG i=a;i>=b;--i) 13 #define ll long long 14 #define inf (1<<29) 15 #define O 100000 16 #define maxn 105 17 #define maxm 200005 18 using namespace std; 19 int n; 20 int dp[maxm],v[maxn],w[maxn]; 21 inline int read() 22 { 23 int x=0,f=1;char c=getchar(); 24 while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();} 25 while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();} 26 return x*f; 27 } 28 int main() 29 { 30 n=read(); 31 rep(i,1,n) w[i]=read(),v[i]=read(); 32 //memset(dp,-63,sizeof(dp)); 33 dp[O]=0; 34 rep(i,1,n) 35 { 36 if(v[i]>=0) 37 per(j,maxm-1,v[i]) 38 dp[j]=max(dp[j],dp[j-v[i]]+w[i]); 39 else 40 rep(j,0,maxm-1+v[i]) 41 dp[j]=max(dp[j],dp[j-v[i]]+w[i]); 42 } 43 int ans=0; 44 rep(i,O,maxm-1) 45 if(dp[i]>=0) 46 ans=max(ans,dp[i]+i-O); 47 cout<<ans; 48 return 0; 49 }
Cow Exhibition [POJ2184] [DP] [背包的负数处理]
标签:queue 循环 etc esc cbe inline cli size poj
原文地址:https://www.cnblogs.com/ibilllee/p/9219019.html