植物大战僵尸
2014-08-05 10:57
274 查看
但是,这次僵尸来进攻时,这些格子里放的不是植物,而是脑子。僵尸不敢独吞,而是想把脑子收集回去给他的K个朋友一起分享,为了不引发各种麻烦,因此他收集的脑子是K+1的倍数。
假设僵尸在地图的下方,而他的家在地图上方,另外,这只僵尸不喜欢走直线,喜欢走斜线,因此他每次只会往左上角走或者往右上角走,每走到一个格子会把这个格子的所有脑子都收集起来,问,怎么走收集的脑子个数最多?他可以在最下方任意选择一个格子作为起点。
3 3 0
123
456
789
3 3 1
123
456
789
2 2 10
98
75
16
-1
哎,最直白的做法
假设僵尸在地图的下方,而他的家在地图上方,另外,这只僵尸不喜欢走直线,喜欢走斜线,因此他每次只会往左上角走或者往右上角走,每走到一个格子会把这个格子的所有脑子都收集起来,问,怎么走收集的脑子个数最多?他可以在最下方任意选择一个格子作为起点。
输入格式
第一行输入一个数T,表示测试数据个数,对于每组测试数据,第一行输入三个数n,m,k,n和m表示这个地图的大小,(0<n,m<=100),k表示他有k个朋友。(0<=k<=10),之后有n行,每行m个数,表示每个格子的脑子个数,每个数都在0到9之间,包括0和9,注意,这些数之间没有空格。输出
对于每组测试数据,输出一个数,表示最多能收集多少个脑,如果没有走法符合条件,输出一个数-1。样例输入
33 3 0
123
456
789
3 3 1
123
456
789
2 2 10
98
75
样例输出
1716
-1
哎,最直白的做法
//2196 kb 34 ms #include <cstdio> #include <iostream> #include <cstring> using namespace std; int dp[105][105][11]; int a[105][105]; int mod; int main(){ int T; scanf("%d", &T); while(T--){ int n, m, f; scanf("%d%d%d", &n, &m, &f); mod = f+1; char str[105]; for(int i=0; i<n; i++){ scanf("%s", str); for(int j=0; j<m; j++) a[i][j] = str[j] - '0'; } memset(dp, -1, sizeof(dp)); for(int j=0; j<m; j++){ int t = a[n-1][j] % mod; dp[n-1][j][t] = a[n-1][j]; } for(int i=n-1; i>=1; i--){ for(int j=0; j<m; j++){ if(j-1 >= 0){ for(int k=0; k<mod; k++){ if(dp[i][j][k] >= 0){ int t = (dp[i][j][k] + a[i-1][j-1]) % mod; dp[i-1][j-1][t] = max(dp[i-1][j-1][t], dp[i][j][k] + a[i-1][j-1]); } } } if(j+1 < m){ for(int k=0; k<mod; k++){ if(dp[i][j][k] >= 0){ int t = (dp[i][j][k] + a[i-1][j+1]) % mod; dp[i-1][j+1][t] = max(dp[i-1][j+1][t], dp[i][j][k] + a[i-1][j+1]); } } } } } int res = -1; for(int j=0; j<m; j++){ res = max(res, dp[0][j][0]); } if(res == -1) printf("-1\n"); else printf("%d\n", res); } return 0; }
相关文章推荐
- BZOJ1565 [NOI2009]植物大战僵尸 【最大权闭合子图 + tarjan缩点(或拓扑)】
- 游戏辅助原理与制作第六课--------植物大战僵尸免冷却思路(二)
- [置顶] cocos2d-x 植物大战僵尸(13)类似酷跑的【同一角色不同动画间的切换的实现】
- Photoshop绘制植物大战僵尸中的食人花
- BZOJ 1565: [NOI2009]植物大战僵尸
- COGS410. [NOI2009] 植物大战僵尸
- bzoj1565 [NOI2009]植物大战僵尸(拓扑序+最大权闭合子图,最小割)
- 【转】 植物大战僵尸资源提取
- 【bzoj1565】[NOI2009]植物大战僵尸
- 游戏辅助原理与制作第二课--------植物大战僵尸修改阳光(一)
- 游戏辅助原理与制作第八课--------植物大战僵尸种植植物CALL的寻找思路
- Bzoj 1565: [NOI2009]植物大战僵尸 最大权闭合图,拓扑排序
- 游戏辅助原理与制作第二课--------植物大战僵尸修改阳光(一)
- 植物大战僵尸开发者访谈
- 呵呵,植物大战僵尸被录制到了优酷,很惊讶
- cocos2d-x 植物大战僵尸(3)随机太阳因子及利用C++多态实现金币递增
- 【bzoj1565】[NOI2009]植物大战僵尸
- 【原创】植物大战僵尸全解密---存档篇
- 一张我为写植物大战僵尸外.挂而画的草稿图...
- IceMx.Mvc 我的js MVC 框架四、试水植物大战僵尸(雏形版)