题目所述。
接下来的n 行,每行有个正整数,每两个整数之间用一个空格隔开,其中第 i 行描
述了 i 号马路上每个单位时间内出现的金币数量(1≤金币数量≤100),即第i行的第 j(1≤j≤)个数表示第 j 个单位时间内i号马路上出现的金币数量。
最后一行,有 n 个整数,每两个整数之间用一个空格隔开,其中第 i 个数表示在 i 号机器人工厂购买机器人需要花费的金币数量(1≤金币数量≤100)。
输出格式
共一行,包含 1 个整数,表示在 个单位时间内,扣除购买机器人花费的金币之后,小新最多能收集到多少金币。
思路
用一维数组f储存第i秒能获得的最大钱数
因为最多同时存在1个机器人
第i秒时第j个机器人走k次1&;lt;k&;lt;p
f[i]axf[i],f[ik]pay[st]+su
这里是从当前点倒推
st是上一个点
当st0,stn
su要一遍遍加上钱k秒第st路上的金币数
每次减去第st条道路(即第st个工厂机器人)的价格
如果ik&;lt;0
直接退出k循环,时间不为负
代码
cde&;lt;iostrea&;;
cde&;lt;cstdio&;;
cde&;lt;cstrg&;;< naspace std;
t n,,p,b[1001],a[1001][1001],f[1001];
t a
{
scanf“ddd“,&;;n,&;;,&;;p;
setf,1000000,sizeoff; f[0]0;