题目概要题目传送门.已知T天内N种物品的价格以及开始时拥有M枚金币每天可以当日价格或卖出物品问T天后最多可以拥有多少枚金币数据分析考场骗分很明显T1时初始金币数即为最终金币数相信大家都会此处就不单独给代码了。当N1时这个问题变成了一个很基础很基础的贪心以下为正解此时我们注意到有15%的测试点是T2我们分析了这个情况之后就会发现这其实是一个完全背包的模版背包容量为手里的钱数物品价值为差价物品体积为物品价格当T大于等于2时我们就需要对每一天进行一次完全背包将结果相加即为最终的答案以下为完整代码#includebits/stdc.husingnamespacestd;intn,m,t;intp[105][105];// 全局dp避免栈溢出intdp[100005];voidcheck1(){intansm;for(inti0;it-1;i)// 最多到t-2天{if(p[i1][0]p[i][0]){intcntans/p[i][0];ansans%p[i][0]cnt*p[i1][0];}}coutans;}voidcheck2(){memset(dp,0,sizeof(dp));for(inti0;in;i){intcostp[0][i];intvp[1][i]-cost;if(v0)continue;for(intjcost;jm;j){dp[j]max(dp[j],dp[j-cost]v);}}coutmdp[m];}voidcheck3(){for(intday0;dayt-1;day)//对每一天进行遍历{memset(dp,0,sizeof(dp));for(inti0;in;i)//完全背包{intcostp[day][i];intvp[day1][i]-cost;if(v0)continue;for(intjcost;jm;j){dp[j]max(dp[j],dp[j-cost]v);}}mdp[m];}coutm;}intmain(){cintnm;for(inti0;it;i){for(intj0;jn;j){cinp[i][j];}}if(t1)//特殊情况1{coutm;return0;}if(n1)//特殊情况2贪心{check1();return0;}if(t2)//特殊情况3背包{check2();return0;}check3();//正解return0;}本人第一篇题解如有错误请各位大佬支出