洛谷 P1070 [NOIP2009 普及组] 道路游戏 题解
题目描述
小新正在玩一个简单的电脑游戏。
游戏中有一条环形马路,马路上有 �n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点,按顺时针顺序依次将这 �n 个机器人工厂编号为 1∼�1∼n,因为马路是环形的,所以第 �n 个机器人工厂和第 11 个机器人工厂是由一段马路连接在一起的。小新将连接机器人工厂的这 �n 段马路也编号为 1∼�1∼n,并规定第 �i 段马路连接第 �i 个机器人工厂和第 �+1i+1 个机器人工厂(1≤�≤�−11≤i≤n−1),第 �n 段马路连接第 �n 个机器人工厂和第 11 个机器人工厂。
游戏过程中,每个单位时间内,每段马路上都会出现一些金币,金币的数量会随着时间发生变化,即不同单位时间内同一段马路上出现的金币数量可能是不同的。小新需要机器人的帮助才能收集到马路上的金币。所需的机器人必须在机器人工厂用一些金币来购买,机器人一旦被购买,便会沿着环形马路按顺时针方向一直行走,在每个单位时间内行走一次,即从当前所在的机器人工厂到达相邻的下一个机器人工厂,并将经过的马路上的所有金币收集给小新,例如,小新在 �i(1≤�≤�1≤i≤n)号机器人工厂购买了一个机器人,这个机器人会从 �i 号机器人工厂开始,顺时针在马路上行走,第一次行走会经过 �i 号马路,到达 �+1i+1 号机器人工厂(如果 �=�i=n,机器人会到达第 11 个机器人工厂),并将 �i 号马路上的所有金币收集给小新。游戏中,环形马路上不能同时存在 22 个或者 22 个以上的机器人,并且每个机器人最多能够在环形马路上行走 �p 次。小新购买机器人的同时,需要给这个机器人设定行走次数,行走次数可以为 1 �1 p 之间的任意整数。当马路上的机器人行走完规定的次数之后会自动消失,小新必须立刻在任意一个机器人工厂中购买一个新的机器人,并给新的机器人设定新的行走次数。
以下是游戏的一些补充说明:
游戏从小新第一次购买机器人开始计时。
购买机器人和设定机器人的行走次数是瞬间完成的,不需要花费时间。
购买机器人和机器人行走是两个独立的过程,机器人行走时不能购买机器人,购买完机器人并且设定机器人行走次数之后机器人才能行走。
在同一个机器人工厂购买机器人的花费是相同的,但是在不同机器人工厂购买机器人的花费不一定相同。
购买机器人花费的金币,在游戏结束时再从小新收集的金币中扣除,所以在游戏过程中小新不用担心因金币不足,无法购买机器人而导致游戏无法进行。也因为如此,游戏结束后,收集的金币数量可能为负。
现在已知每段马路上每个单位时间内出现的金币数量和在每个机器人工厂购买机器人需要的花费,请你告诉小新,经过 �m 个单位时间后,扣除购买机器人的花费,小新最多能收集到多少金币。
输入格式
第一行 33 个正整数 �,�,�n,m,p,意义如题目所述。
接下来的 �n 行,每行有 �m 个正整数,每两个整数之间用一个空格隔开,其中第 �i 行描。
述了 �i 号马路上每个单位时间内出现的金币数量(1≤1≤ 金币数量 ≤100≤100),即第 �i 行的第 �j(1≤�≤�1≤j≤m)个数表示第 �j 个单位时间内 �i 号马路上出现的金币数量。
最后一行,有 �n 个整数,每两个整数之间用一个空格隔开,其中第 �i 个数表示在 �i 号机器人工厂购买机器人需要花费的金币数量(1≤1≤ 金币数量 ≤100≤100)。
输出格式
共一行,包含 11 个整数,表示在 �m 个单位时间内,扣除购买机器人花费的金币之后,小新最多能收集到多少金币。
输入输出样例
输入 #1复制
2 3 2
1 2 3
2 3 4
1 2
输出 #1复制
5
说明/提示
对于 40%40% 的数据,2≤�≤402≤n≤40,1≤�≤401≤m≤40。
对于 90%90% 的数据,2≤�≤2002≤n≤200,1≤�≤2001≤m≤200。
对于 100%100% 的数据,2≤�≤10002≤n≤1000,1≤�≤10001≤m≤1000,1≤�≤�1≤p≤m。
NOIP 2009 普及组 第四题
代码
#include <bits/stdc++.h>using namespace std;typedef long long ll;
const int INF = 0x3f3f3f3f;
const int MAXN = 5e5 + 100;
const int MAXM = 3e3 + 10;template < typename T > inline void read(T &x) {x = 0; T ff = 1, ch = getchar();while(!isdigit(ch)) {if(ch == '-') ff = -1;ch = getchar();}while(isdigit(ch)) {x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}x *= ff;
}template < typename T > inline void write(T x) {if(x < 0) putchar('-'), x = -x;if(x > 9) write(x / 10);putchar(x % 10 + '0');
}int n, m, p, f[MAXN], cost[MAXN], a[MAXM][MAXM];int main() {read(n); read(m); read(p);for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) read(a[i][j]);for(int i = 1; i <= n; ++i) read(cost[i]);memset(f, -0x3f, sizeof(f));f[0] = 0;for(int i = 1; i <= m; ++i) {for(int j = 1; j <= n; ++j) {int ans = -cost[j] + f[i - 1];for(int k = 0; k < p && i + k <= m; ++k) {int q = j + k;if(q > n) q %= n;ans += a[q][i + k];f[i + k] = max(ans, f[i + k]);}}}write(f[m]);return 0;
}
洛谷 P1070 [NOIP2009 普及组] 道路游戏 题解相关推荐
- 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏
[题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...
- 信息学奥赛一本通 1180 | 1946:【09NOIP普及组】分数线划定 | OpenJudge NOI 1.10 05 | 洛谷 P1068 [NOIP2009 普及组] 分数线划定
[题目链接] ybt 1180:分数线划定 ybt 1946:[09NOIP普及组]分数线划定 OpenJudge NOI 1.10 05:分数线划定 洛谷 P1068 [NOIP2009 普及组] ...
- 洛谷P1312 [NOIP2011 提高组] Mayan 游戏 题解
题目描述 Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7 行 5×5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指 ...
- 洛谷P1010 [NOIP1998 普及组] 幂次方题解
数论递归 题目描述 任何一个正整数都可以用2的幂次方表示.例如137=27+23+20. 同时约定方次用括号来表示,即ab可表示为 a(b). 由此可知,137可表示为2(7)+2(3)+2(0). ...
- 洛谷P1010 [NOIP1998 普及组] 幂次方 题解
题目 C++: #include<bits/stdc++.h> using namespace std; string run(int x,int i=0,string s=string( ...
- 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方
[题目链接] ybt 1208:2的幂次方表示 OpenJudge 2.2 8758:2的幂次方表示 洛谷 P1010 [NOIP1998 普及组] 幂次方 [题目考点] 1. 递归 [解题思路] 递 ...
- 信息学奥赛一本通 1314:【例3.6】过河卒(Noip2002) | 1921:【02NOIP普及组】过河卒 | 洛谷 P1002 [NOIP2002 普及组] 过河卒
[题目链接] ybt 1314:[例3.6]过河卒(Noip2002) ybt 1921:[02NOIP普及组]过河卒 洛谷 P1002 [NOIP2002 普及组] 过河卒 [题目考点] 1. 坐标 ...
- 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金
[题目链接] ybt 1179:奖学金 ybt 1938:[07NOIP普及组]奖学金 OpenJudge NOI 1.10 04:奖学金 洛谷 P1093 [NOIP2007 普及组] 奖学金 [题 ...
- 信息学奥赛一本通 1233:接水问题 | 1950:【10NOIP普及组】接水问题 | OpenJudge NOI 1.9 15 | 洛谷 P1190 [NOIP2010 普及组] 接水问题
[题目链接] ybt 1233:接水问题 ybt 1950:[10NOIP普及组]接水问题 OpenJudge NOI 1.9 15:接水问题 洛谷 P1190 [NOIP2010 普及组] 接水问题 ...
最新文章
- Java Swing 皮肤
- 深入理解php底层:php生命周期 [转]
- python中print用法
- 基于Boost::beast模块的小型http服务器
- bat批处理命令大全_DOS使用环境变量图文教程,bat批处理脚本查看调用环境变量命令...
- 数字滤波常用方法(转)
- Entity Framework入门教程:创建实体数据模型
- js修改本地json文件_Flutter加载本地JSON文件教程建议收藏
- 前端学习(3138):react-hello-react之组件挂载流程
- php油酸诱导剂,油酸诱导建鲤(Cyprinus carpio var. Jian)肝细胞脂肪变性模型的建立
- 预告 | PGCon 2022(PostgreSQL全球开发者大会)开幕,IvorySQL受邀参加
- http301重定向IIS 301重定向域名转向新旧域名更替
- pig的基本语法以及高级语法
- catch小说内容-从gui到爬虫(2)
- 第二类曲面积分、场论、高斯公式和斯托克斯公式
- fluter set get
- 未来10年云计算发展前景如何?云计算的优势在哪里?
- 通俗理解ip地址,子网掩码,网关
- C语言解一元高次方程代码,拜求大佬,这代码里面是什么意思,这是一个求一元高次方程的代码...
- Software Engineering at Google翻译-III-8-Style Guides and Rules(风格指南和规则 )