洛谷P2340 奶牛会展

Posted third2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷P2340 奶牛会展相关的知识,希望对你有一定的参考价值。

洛谷P2340 奶牛会展
用下标表示智商,值表示情商

 

 1 #include <bits/stdc++.h> 
 2 #define For(i,j,k) for(int i=j;i<=k;i++) 
 3 using namespace std ;  
 4 
 5 const int N = 411 ; 
 6 int n,m ; 
 7 int a[N],b[N],f[800011] ; 
 8 
 9 inline int read() 
10 {
11     int x = 0 , f = 1 ; 
12     char ch = getchar() ; 
13     while(ch<0||ch>9) { if(ch==-) f = -1 ; ch = getchar() ; } 
14     while(ch>=0&&ch<=9) { x = x * 10+ch-48 ; ch = getchar() ; } 
15     return x * f ;  
16 }
17 
18 int main() 
19 {
20     n = read() ; 
21     For(i,1,n) {
22         a[i]=read(),b[i]=read() ; 
23         if(a[i]>0) m+=a[i] ; 
24     }
25     m=m<<1 ; 
26     memset(f,-127/3,sizeof f) ; 
27     f[m/2] = 0 ; 
28     For(i,1,n) {
29         if(a[i]>0) 
30           for(int j=m;j>=a[i];j--) f[j]=max(f[j],f[j-a[i]]+b[i]) ; 
31         if(a[i]<=0) 
32           For(j,0,m+a[i]) f[j]=max(f[j],f[j-a[i]]+b[i]) ; 
33     }
34     
35     int k = m/2 ; 
36     int ans = 0 ; 
37     For(i,0,k) 
38       if( f[i+k]>=0&&i+f[i+k]>=ans ) 
39           ans = i+f[i+k] ; 
40     printf("%d\n",ans) ; 
41     return 0 ; 
42 }

 

以上是关于洛谷P2340 奶牛会展的主要内容,如果未能解决你的问题,请参考以下文章

题解 P2340 奶牛会展

[USACO]奶牛会展(背包)

奶牛会展

AC日记——[USACO5.4]奶牛的电信Telecowmunication 洛谷 P1345

洛谷P2345奶牛集会

洛谷P2345 奶牛集会