首页 > 代码库 > uva 10032 Problem F: Tug of War
uva 10032 Problem F: Tug of War
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=973
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define ll long long 5 using namespace std; 6 7 int w[5000]; 8 int n; 9 ll dp[50000];10 11 int main()12 {13 int t;14 scanf("%d",&t);15 while(t--)16 {17 scanf("%d",&n);18 int sum=0;19 for(int i=0; i<n; i++)20 {21 scanf("%d",&w[i]);22 sum+=w[i];23 }24 memset(dp,0,sizeof(dp));25 dp[0]=1;26 for(int i=0; i<n; i++)27 {28 for(int j=sum; j>=w[i]; j--)29 {30 dp[j] |= dp[j-w[i]]<<1;31 }32 }33 int ans1=0,ans2=0x3f3f3f3f;34 for(int i=0; i<=sum; i++)35 {36 for(int j=0; j<=(n+1)/2; j++)37 {38 if(dp[i]&(1ll<<j) && abs(2*j-n)<=1)39 {40 if(abs(sum-2*i)<ans2-ans1)41 {42 ans2=max(sum-i,i);43 ans1=min(sum-i,i);44 }45 }46 }47 }48 printf("%d %d\n",ans1,ans2);49 if(t) printf("\n");50 }51 return 0;52 }
uva 10032 Problem F: Tug of War
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。