题目链接

bzoj3628: [JLOI2014]天天酷跑

题解

开始读错题目了,尴尬

由于题目说的跳跃次数和高度是在一开始设定的。

发现枚举一下记忆化搜索就可以过了

要注意,跳到最高点是可以不下坠继续连跳的

另外,上边界不能到达

代码

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. inline int read() {
  5. int x = 0,f = 1;
  6. char c = getchar();
  7. while(c < '0' || c > '9'){if(c == '-') f = -1; c = getchar(); }
  8. while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
  9. return x * f;
  10. }
  11. const int maxn = 100007;
  12. int n,m,c1,c2,h,freq;
  13. #define INF 100000007
  14. int a[23][maxn];
  15. int f[23][maxn][6];
  16. bool vis[23][maxn][6];
  17. int dfs(int x,int y,int jumpcnt) {
  18. if(y > n) return 0;
  19. if(a[x][y] == -1) return -INF;
  20. if(vis[x][y][jumpcnt]) return f[x][y][jumpcnt];
  21. if(x == 1)jumpcnt = 0;
  22. int tmp = -INF ;
  23. if(jumpcnt < freq) {
  24. int Sum = 0,tx = x,ty = y; bool can = true;
  25. for(int i = 1;i < h;i ++) {
  26. tx ++,ty ++;
  27. if(a[tx][ty] == -1) {can = false; break; } Sum += a[tx][ty];
  28. }
  29. if(can) tmp = std::max(tmp,Sum + dfs(tx + 1,ty + 1,jumpcnt + 1));
  30. }
  31. if(x == 1) tmp = std::max(tmp, dfs(x,y + 1,0)) ;
  32. if(x > 1) tmp = std::max(tmp, dfs(x - 1,y + 1,jumpcnt));
  33. f[x][y][jumpcnt] = tmp + a[x][y];
  34. vis[x][y][jumpcnt] = true;
  35. return f[x][y][jumpcnt];
  36. }
  37. int ans = -INF ,an1,an2;
  38. int main() {
  39. n = read(),m = read(), c1 = read(),c2 = read();
  40. for(int i = 1;i <= m;++ i) for(int j = 1;j <= n;++ j)
  41. a[i][j] = read();
  42. for(freq = 1;freq <= 5;++ freq)
  43. for(h = 1;h * freq < m;++ h) {
  44. memset(vis,0,sizeof vis);
  45. memset(f,0,sizeof f);
  46. int sum = dfs(1,0,m) - (h - 1) * c1 - (freq - 1) * c2;
  47. if(sum > ans) ans = sum , an1 = h, an2 = freq;
  48. }
  49. if(ans > 0) printf("%d %d %d\n",ans,an2,an1);
  50. else puts("mission failed");
  51. return 0 ;
  52. } #include<cstdio>
  53. #include<cstring>
  54. #include<algorithm>
  55. inline int read() {
  56. int x = 0,f = 1;
  57. char c = getchar();
  58. while(c < '0' || c > '9'){if(c == '-') f = -1; c = getchar(); }
  59. while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
  60. return x * f;
  61. }
  62. const int maxn = 100007;
  63. int n,m,c1,c2,h,freq;
  64. #define INF 100000007
  65. int a[23][maxn];
  66. int f[23][maxn][6];
  67. bool vis[23][maxn][6];
  68. int dfs(int x,int y,int jumpcnt) {
  69. if(y > n) return 0;
  70. if(a[x][y] == -1) return -INF;
  71. if(vis[x][y][jumpcnt]) return f[x][y][jumpcnt];
  72. if(x == 1)jumpcnt = 0;
  73. int tmp = -INF ;
  74. if(jumpcnt < freq) {
  75. int Sum = 0,tx = x,ty = y; bool can = true;
  76. for(int i = 1;i < h;i ++) {
  77. tx ++,ty ++;
  78. if(a[tx][ty] == -1) {can = false; break; } Sum += a[tx][ty];
  79. }
  80. if(can) tmp = std::max(tmp,Sum + dfs(tx + 1,ty + 1,jumpcnt + 1));
  81. }
  82. if(x == 1) tmp = std::max(tmp, dfs(x,y + 1,0)) ;
  83. if(x > 1) tmp = std::max(tmp, dfs(x - 1,y + 1,jumpcnt));
  84. f[x][y][jumpcnt] = tmp + a[x][y];
  85. vis[x][y][jumpcnt] = true;
  86. return f[x][y][jumpcnt];
  87. }
  88. int ans = -INF ,an1,an2;
  89. int main() {
  90. n = read(),m = read(), c1 = read(),c2 = read();
  91. for(int i = 1;i <= m;++ i) for(int j = 1;j <= n;++ j)
  92. a[i][j] = read();
  93. for(freq = 1;freq <= 5;++ freq)
  94. for(h = 1;h * freq < m;++ h) {
  95. memset(vis,0,sizeof vis);
  96. memset(f,0,sizeof f);
  97. int sum = dfs(1,0,m) - (h - 1) * c1 - (freq - 1) * c2;
  98. if(sum > ans) ans = sum , an1 = h, an2 = freq;
  99. }
  100. if(ans > 0) printf("%d %d %d\n",ans,an2,an1);
  101. else puts("mission failed");
  102. return 0 ;
  103. }

bzoj3628: [JLOI2014]天天酷跑的更多相关文章

  1. [JLOI2014]天天酷跑

    请允许我对记忆化搜索进行一个总结,我认为所有的搜索只要数据范围允许,都可以转化为记忆化搜索, 只是,用处的多与少的关系,其本身是求出设出状态之后,为求出当前状态进行递推(搜索),推到 已知状态,之后再 ...

  2. Android版xx助手之天天酷跑外挂具体分析

    Android版xx助手之天天酷跑外挂具体分析 图/文      莫灰灰 背景 近些年来,移动互联网的大肆崛起,潜移默化中影响着人们的生活和工作习惯.当腾讯的微信平台接入手机游戏之后,移动端的游戏也開 ...

  3. 程序游戏推荐(C语言贪吃蛇,python天天酷跑(需要安装pygame),js是狠人就坚持30s)

    下面是下载位置,我把他们上传到我的文件下了. C语言贪吃蛇:https://files.cnblogs.com/files/ITXiaoAng/%E8%B4%AA%E5%90%83%E8%9B%87. ...

  4. cocos2d 简单的日常高仿酷跑游戏

    1.第一个直接看看这个游戏看起来视频(GIF我们不能满足游戏展) 跑酷游戏最纠结的是地图.碰撞倒是简单,能够自己写或者使用box2d等物理引擎.跑酷游戏地图的特点就是随机性.可是随机中又有策划特意安排 ...

  5. [置顶] cocos2d-x 植物大战僵尸(13)类似酷跑的【同一角色不同动画间的切换的实现】

          有几天没和大家分享博客了,原因很简单,就是我在运行第12章所写的代码时:(开始一切正常,不过没多久就出现了内存泄露!.可能求成心切吧,当时没多加考虑就把代码发上去了.我在此对看过第12章得 ...

  6. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  7. 站在风口,你或许就是那年薪20w+的程序猿

    最近面试了一些人,也在群上跟一些群友聊起,发现现在的互联网真是热,一些工作才两三年的期望的薪资都是十几K的起,这真是让我们这些早几年就成为程序猿的情何以堪!正所谓是站在风口上,猪也能飞起来!我在这里就 ...

  8. 相关query挖掘

    1.何为相关query 我通常也把相关query称为相似query,搜索日志中一个用户在短时间内的一系列搜索词被称为相关query.相关就是两个query间有一定的关系,反映了用户在当时的需求.本文就 ...

  9. iOS开发之如何跳到系统设置里的各种设置界面

    跳到更多设置界面 除了跳到WiFi设置界面,能不能跳到其他的设置界面呢?比如:定位服务.FaceTime.音乐等等.都是可以的,一起来看看如何实现的! 定位服务 定位服务有很多APP都有,如果用户关闭 ...

随机推荐

  1. MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  2. 2018年5月6日GDCPC (广东赛区)总结

    试机是队友浩哥一个人去的,因为觉得华工去了不少次了,环境也比较熟悉了.直到看到了现场环境,感觉有些拥挤,不如从前那样宽敞,增加了一些紧张的不适感. 比赛开始时,我们三人分头读题,虽说题目比较简短,但第 ...

  3. HDU 2049 不容易系列之(4)——考新郎 (错排+组合)

    题目链接. Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体 ...

  4. 银行卡号码校验算法(Luhn算法,又叫模10算法)

    有时候在网上办理一些业务时有些需要填写银行卡号码,当胡乱填写时会立即报错,但是并没有发现向后端发送请求,那么这个效果是怎么实现的呢. 对于银行卡号有一个校验算法,叫做Luhn算法. 一.银行卡号码的校 ...

  5. SqlMapConfig.xml全局配置文件介绍——(四)

    ----------mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:----------- properties(属性) settings(全局配置参数) typeAlia ...

  6. 直接读取修改exe文件

    1. 前言 配置器的编写有很多的方式,主要是直接修改原始的受控端的程序,有的方式是把受控端和配置信息都放到控制端程序的内部,在需要配置受控端的时候直接输入配置信息,生成受控端:也有的方式是在外部直接修 ...

  7. Linux本地解析文件/etc/hosts说明【原创】

    windows的域名本地解析文件hosts是可以一个域名对多个IP,如果有一个IP有问题,可以去解析到其他IP Linux的本地解析文件/etc/hosts,是否也可以这样呢.下面做了个测试 先看一下 ...

  8. lvs+keepalived+nginx实现高性能负载均衡集群【转】

    转自 lvs+keepalived+nginx实现高性能负载均衡集群 - 青衫lys - 博客园http://www.cnblogs.com/liuyisai/p/5990645.html 一.为什么 ...

  9. spring mvc file upload

    文件上传 1.需要导入两个jar包 2.在SpringMVC配置文件中加入 1 2 3 4 <!-- upload settings --> <bean id="multi ...

  10. 大数据的常用算法(分类、回归分析、聚类、关联规则、神经网络方法、web数据挖掘)

    在大数据时代,数据挖掘是最关键的工作.大数据的挖掘是从海量.不完全的.有噪声的.模糊的.随机的大型数据库中发现隐含在其中有价值的.潜在有用的信息和知识的过程,也是一种决策支持过程.其主要基于人工智能, ...