#include<bits/stdc++.h> using namespace std; int knap(int W, int wt[], int val[], int n) { int i, w; int K[n+1][W+1]; for (i = 0; i <= n; i++) { for (w = 0; w <= W; w++) { if (i==0 || w==0) K[i][w] = 0; else if (wt[i-1] <= w) K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]); else K[i][w] = K[i-1][w]; } } return K[n][W]; } int main(){ int t,n,w,d,ans,sum; while(cin>>t){ while(t--){ sum=0; cin>>n; int wt[100+1],val[100+1]; memset(wt,0,101); memset(val,0,101); for(int i=0; i<n; i++){ cin>>wt[i]; val[i]=wt[i]; sum+=wt[i]; } w = sum/2; d = knap(w,wt,val,n); ans=sum - 2*d; cout<<ans<<'\n'; } } return 0; }
Wednesday, February 8, 2017
UVa 562
UVa 10664
#include<bits/stdc++.h> using namespace std; int knap(int W, int wt[], int val[], int n) { int i, w; int K[n+1][W+1]; for (i = 0; i <= n; i++) { for (w = 0; w <= W; w++) { if (i==0 || w==0) K[i][w] = 0; else if (wt[i-1] <= w) K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]); else K[i][w] = K[i-1][w]; } } return K[n][W]; } int main(){ string n; int m,sum,d,w,ans; int wt[21],val[21]; cin>>m; getchar(); while(m--){ getline(cin,n); int num; istringstream str(n); int i=0; sum=0; while(str >> num){ sum+=num; wt[i]=val[i]=num; i++; } if(sum%2==1){ cout<<"NO"<<'\n'; } else { w= sum / 2; d= knap(w,wt,val,i); if(d==w) cout<<"YES"<<'\n'; else cout<<"NO"<<'\n'; } } return 0; }
Tuesday, December 6, 2016
UVa 12555
#include<bits/stdc++.h> using namespace std; int main() { int t,sz,a; int kase=1; double res; string inp; cin>>t; while(t--){ res=0; cin>>a; cin>>inp; sz=inp.size(); if(sz <= 4) res = a * .5; else res = (inp[3]-'0') * .05 + a * .5; cout<<"Case "<<kase<<": "; cout<<res<<endl; kase++; } return 0; } //translation chinese to english :D //.5kg = jin //.05 = two // so "5 jin 2 two" consider it :)
Subscribe to:
Posts (Atom)