分析:标准的棋盘dp问题.

如果没有技能,那么就很好做了,相当于传纸条的做法.有了技能的限制,我们就要加上一维表示用了多少次技能,这个时候转移就要用到dfs了,而且不能用填表法,要用刷表法,从当前位置用技能的状态来更新到达的位置的状态,dp状态转移方程也要写成刷表法的形式.

如果很难从以前的状态推得现在的状态,那么就用现在的状态去更新以后的状态吧!

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std;
const int inf = 0x7ffffff; int n, m, t, k, h, atk,f[][][],a[][],ans = inf; int jisuan(int xue, int gongji)
{
return(h - ) / gongji * xue;
} void dfs(int x,int y,int cur,int xue,int gongji,int depth)
{
if (depth > k)
{
f[x][y][cur + ] = min(f[x][y][cur + ], xue);
return;
}
if (x + <= n)
dfs(x + , y, cur, xue + jisuan(a[x + ][y],gongji + a[x + ][y]), gongji + a[x + ][y], depth + );
if (y + <= m)
dfs(x, y + , cur, xue + jisuan(a[x][y + ], gongji + a[x][y + ]), gongji + a[x][y + ], depth + );
} int main()
{
scanf("%d%d%d%d%d%d", &n, &m, &t, &k, &h, &atk);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
scanf("%d", &a[i][j]);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
for (int l = ; l <= t; l++)
f[i][j][l] = inf;
f[][][] = ;
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
for (int l = ; l <= t; l++)
{
if (l != t)
dfs(i, j, l, f[i][j][l], atk,);
if (i + <= n)
f[i + ][j][l] = min(f[i + ][j][l], f[i][j][l] + jisuan(a[i + ][j], atk));
if (j + <= m)
f[i][j + ][l] = min(f[i][j + ][l], f[i][j][l] + jisuan(a[i][j + ], atk));
}
for (int i = ; i <= t; i++)
ans = min(ans, f[n][m][i]);
printf("%d\n", ans); return ;
}

最新文章

  1. Visual Studio原生开发的10个调试技巧
  2. RESTful在asp.net webAPI下的PUT、POST实现,json传输实体
  3. iOS开发——高级技术&amp;内购服务
  4. Hadoop2.x源码-编译剖析
  5. sql多表查询(out join,inner join, left join, right join)
  6. iOS 8.3 JB ready
  7. Linux企业级项目实践之网络爬虫(19)——epoll接口
  8. uva 11137 Ingenuous Cubrency(完全背包)
  9. 17.1 Replication Configuration 复制:
  10. SaltStack Job管理
  11. Linux的capability深入分析
  12. poj 3461 Oulipo(KMP模板题)
  13. PHP7的异常处理机制,set_error_handler和set_exception_handler方法介绍
  14. Vuex 2.0 深入简出
  15. impala教学视频
  16. Android权限之动态权限
  17. MapReduce编程:词频统计
  18. Vue.js——常用的指令
  19. win10系统安装web3js的正确方法
  20. 八、mini2440裸机程序之UART(1)简单介绍【转】

热门文章

  1. bzoj 1596: [Usaco2008 Jan]电话网络【贪心】
  2. python re的使用
  3. 利用Openfiler配置基于文件系统的网络存储
  4. gauge自动化测试框架(二)
  5. 在计算机视觉与人工智能领域,顶级会议比SCI更重要(内容转)
  6. 重新学习Java——对象和类(二)
  7. [ POI 2005 ] Bank Notes
  8. HTTP常见面试题
  9. [Windows Server 2012] MySQL更改数据库引擎(MyISAM改为INNODB)
  10. MFC获取各窗口指针句柄