P10484 送礼物题目描述作为惩罚GY 被遣送去帮助某神牛给女生送礼物 (GY貌似是个好差事但是在 GY 看到礼物之后他就不这么认为了。某神牛有NNN个礼物且异常沉重但是 GY 的力气也异常的大 (-_-b)他一次可以搬动重量和在www以下的任意多个物品。GY 希望一次搬掉尽量重的一些物品请你告诉他在他的力气范围内一次性能搬动的最大重量是多少。输入格式第一行两个整数分别代表WWW和NNN。以后NNN行每行一个正整数表示GiG_iGi​。输出格式仅一个整数表示 GY 在他的力气范围内一次性能搬动的最大重量。输入输出样例 #1输入 #120 5 7 5 4 18 1输出 #119说明/提示对于所有测试数据1≤N≤461 \le N \le 461≤N≤46,1≤W,Gi≤231−11 \le W,G_i \le 2^{31}-11≤W,Gi​≤231−1。C实现#includebits/stdc.h#defineintlonglong#definef(i,m,n,x)for(inti(m);i(n);i(x))usingnamespacestd;templatetypenameTinlinevoidread(Tx){x0;boolflag(0);registercharchgetchar();while(!isdigit(ch)){flagch-;chgetchar();}while(isdigit(ch)){x(x1)(x3)(ch^48);chgetchar();}flag?x-x:0;}constintN50,M(123)7;intw,n,g[N],v1[M],v2[M],tot1,tot2,mid;inlinevoiddfs(intnum,intend,intsum,boolflag){if(numend1){if(!flag){v1[tot1]sum;return;}v2[tot2]sum;return;}dfs(num1,end,sum,flag);if(sumg[num]w){dfs(num1,end,sumg[num],flag);}// 第 num 个物品可以选或者不选}intans;signedmain(){read(w),read(n);f(i,1,n,1){read(g[i]);}midn1;dfs(1,mid,0,0);dfs(mid1,n,0,1);intjtot2;sort(v11,v1tot11);sort(v21,v2tot21);f(i,1,tot1,1){while(j1v2[j]v1[i]w)j--;ansmax(ans,v2[j]v1[i]);}coutans\n;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容