1. /**
  2. 题目:City Destruction Kattis - city
  3. 链接:https://vjudge.net/problem/Kattis-city
  4. 题意:有n个怪兽,排成一行。每个怪兽有一个生命值和一个爆炸值。每次可以选择一个怪兽攻击早造成d伤害。
  5. 如果生命值<=0;那么怪兽i死亡并且爆炸。i+1,i-1第怪兽都会受到
  6. 第i个怪兽的爆炸值伤害。如果第i-1被第i炸死,第i-1怪兽不会继续炸别人。
  7. 不会传递。也就是只有攻击者攻击致死的怪兽才会对i-1,i+1造成爆炸值伤害。
  8. 求最少攻击多少次才能杀死所有的怪兽。
  9. 思路:
  10. 定义dp[i][j]表示前i个怪兽,j=0表示i-1比i先死,j=1表示i-1比i后死需要的最少攻击次数。
  11. ///本题直接写递推方程我写不出来,因为i和i-1以及未知的i+1都有关联。i+1是未知的。
  12. 所以不好表示,本人菜鸡。如果dfs记忆化做法,倒是清晰。
  13.  
  14. */
  15.  
  16. #include <cstdio>
  17. #include <cstring>
  18. #include <algorithm>
  19. #include <set>
  20. #include <queue>
  21. #include <iostream>
  22. #include <vector>
  23. using namespace std;
  24. #define ms(x,y) memset(x,y,sizeof x)
  25. typedef long long LL;
  26. const int N = 1e4;
  27. const LL INF = 1e18;
  28. LL dp[N][];///j=0表示i-1比i先死,j=1表示i-1比i晚死。
  29. int h[N], e[N];
  30. int n, d;
  31. LL cal(LL r)
  32. {
  33. if(r<=) return ;
  34. if(r%d==){
  35. return r/d;
  36. }
  37. return r/d+;
  38. }
  39. LL dfs(int i,int j)
  40. {
  41. if(i==n){
  42. return ;
  43. }
  44. LL &res = dp[i][j];
  45. if(res!=-) return res;
  46. res = INF;
  47. LL r = h[i];
  48. if(j==){
  49. r -= e[i-];
  50. res = min(res,dfs(i+,)+cal(r));
  51. if(i<n-){
  52. res = min(res,dfs(i+,)+cal(r-e[i+]));
  53. }
  54. }else
  55. {
  56. res = min(res,dfs(i+,)+cal(r));
  57. if(i<n-){
  58. res = min(res,dfs(i+,)+cal(r-e[i+]));
  59. }
  60. }
  61. return res;
  62. }
  63. int main()
  64. {
  65. int T;
  66. cin>>T;
  67. while(T--)
  68. {
  69. scanf("%d%d",&n,&d);
  70. for(int i = ; i < n; i++){
  71. scanf("%d",&h[i]);
  72. }
  73. for(int i = ; i < n; i++){
  74. scanf("%d",&e[i]);
  75. }
  76. memset(dp, -, sizeof dp);
  77. printf("%lld\n",dfs(,));
  78. }
  79. return ;
  80. }

City Destruction Kattis - city dp的更多相关文章

  1. HDU 1505 City Game (hdu1506 dp二维加强版)

    F - City Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  2. ZOJ 3042 City Selection II 【序】【离散化】【数学】

    题意: 输入数据n,m.n代表工厂的数量,m代表城市的数量. 接下来n+m行为工厂和城市的坐标. 规定如图所示方向刮风,工厂的air会污染风向地区的air. 注意,工厂和城市的坐标表示的是从x到x+1 ...

  3. HDU 4849-Wow! Such City!(最短路)

    Wow! Such City! Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Other ...

  4. bzoj:1687;poj 2434:[Usaco2005 Open]Navigating the City 城市交通

    Description A dip in the milk market has forced the cows to move to the city. The only employment av ...

  5. [py][mx]django课程页显示city和机构封面图

    city和课程机构信息展示到前台去 organization/views.py from django.views.generic.base import View from organization ...

  6. HDU-4849 Wow! Such City! (单源最短路)

    Problem Description Doge, tired of being a popular image on internet, is considering moving to anoth ...

  7. HDU 5352——MZL's City——————【二分图多重匹配、拆点||网络流||费用流】

    MZL's City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  8. hdu4849 Wow! Such City!(最短路dijkstra)

    转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:pid=4849">http://acm.hdu.edu ...

  9. 2015 Multi-University Training Contest 5 hdu 5352 MZL's City

    MZL's City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

随机推荐

  1. UVa 164 - String Computer

    题目:编辑距离.给你两个串,将已知串转化成目标串,能够增.删.改字母,求最小操作次数. 分析:dp,编辑距离.同最大公共子序列. 注意操作位置是实时变化的. (前面都已经处理好了)           ...

  2. Android-各个屏幕的logo尺寸要求

    DENSITY SIZE LOCATION RATIO SCREEN MARGIN XXXHDPI 192×192 drawable-xxxhdpi 4 640 DPI 12 to 16 pixels ...

  3. onmouseout,mouseover经过子元素也触发的问题解决方案

    在mouseout与mouseover的冒泡问题上,相信有很多朋友都遇到过.今天这里就总结一下 关于mouseover和mouseout冒泡问题的解决方案: 首先,看下event.relatedTar ...

  4. hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  5. js实现全选,全不选,反选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. JS 错误处理与调试

    在程序开发中难免会遇到一些错误,在成千上万的代码中去寻找错误非常明显相当于大海捞针.为此,每种计算机编程语言都要它独特的一套错误处理与调试机制.当然,JavaScript也不例外. 错误发生: 运行代 ...

  7. MiniHttpServer

    Mini HTTP Server which can be embed in EXE, Writen in C#(.net framework 2.0). HTTP request dispatch/ ...

  8. 【LeetCode】- Search Insert Position(查找插入的位置)

    [ 问题: ] Given a sorted array and a target value, return the index if the target is found. If not, re ...

  9. Sqlldr导入txt文件内容到数据库中

    需求:数据迁移,将txt文件中的内容导入oracle数据库的表中,文本文件中数据格式如下(数据以空格隔开) 1. 创建与文本数据格式相匹配的表(此处在scott用户下创建) create table ...

  10. 每秒处理3百万请求的Web集群搭建-如何生成每秒百万级别的 HTTP 请求?

    本文是构建能够每秒处理 3 百万请求的高性能 Web 集群系列文章的第一篇.它记录了我使用负载生成器工具的一些经历,希望它能帮助每一个像我一样不得不使用这些工具的人节省时间. 负载生成器是一些生成用于 ...