Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:qsort WA sort AC 求解释,附170+MS代码In Reply To:qsort WA sort AC 求解释,附170+MS代码 Posted by:speedcell4 at 2011-10-10 00:22:27 > #include<iostream> > #include<algorithm> > > using namespace std; > > const int MAXN = 40012; > > int n,cnt; > bool dp[MAXN]; > int h[MAXN],a[MAXN],c[MAXN],r[MAXN]; > > void ZeroOne_Pack(int w,int v) > { > for(int i=v;i>=w;i--) if(dp[i-w]) dp[i]=true,cnt=max(cnt,i); > } > void Complete_Pack(int w,int v) > { > for(int i=w;v>=i;i++) if(dp[i-w]) dp[i]=true,cnt=max(cnt,i); > } > void Multiple_Pack(int w,int n,int v) > { > if(w*n>=v) Complete_Pack(w,v); > else > { > for(int i=1;i<n;i*=2) > { > n-=i; > ZeroOne_Pack(i*w,v); > } > ZeroOne_Pack(n*w,v); > } > } > bool cmp(int i,int j) > { > return a[i]<a[j]; > } > int main() > { > while(scanf("%d",&n)!=EOF) > { > cnt=0; > int h_=0,a_=0,c_=0; > memset(dp,false,sizeof(dp)); dp[0]=true; > for(int i=0;n-i>0;i++) > { > scanf("%d %d %d",&h[i],&a[i],&c[i]); > r[i]=i; > } > sort(r,r+n,cmp); > for(int i=0;n-i>0;i++) Multiple_Pack(h[r[i]],c[r[i]],a[r[i]]); > printf("%d\n",cnt); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator