热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

POJ3034WhacaMoleDP

题意:在一个n*n的矩阵中,每个(x,y)坐标有个洞,在任意时刻(从上一时刻开始到目前时刻结束&

题意:在一个n*n的矩阵中,每个(x,y)坐标有个洞,在任意时刻(从上一时刻开始到目前时刻结束),任意位置可能会探出一个鼹鼠的头,如果用锤子 打中即得一分,锤子活动的范围是以d(1=
题解:动态规划,最优结果由子问题的最优结果得出。注意的是:锤子可以移动到矩阵之外。
在一个确定的时刻,每个点作为endpoints可得多少分,在下一时刻,每个点作为endpoints可得多少分为:         
 dp[i][j][k]=max{dp[x~][y~][k-1]+Mole[x][y][k]}
表示以(x~,y~)为起始坐标,i,j为目标坐标,在上一时刻(x~,y~)得到的最多分加上沿路可得到的分;
取这些可选路线中使第k时刻以(i,j)为目标坐标得到最多分的路线放在dp[i][j][k].
以上转自:
http://wangjia007bond.blog.163.com/blog/static/304220242009102695054442/

注意:锤子没有要求一定要落在n*n游戏盘面中,有可能某一时刻落在盘外,在下一时刻,由盘外沿直线进入盘内。


#include
#include
using namespace std;#define max(a,b) ( a > b ? a : b )bool map[32][32][11];
int dp[32][32][11];
int n, d, m;int gcd ( int a, int b )
{return (a == 0) ? b : gcd ( b % a, a );
}int get_sum ( int x1, int y1, int x2, int y2, int t )
{int i, dx, dy, g, sum &#61; 0; dx &#61; x2 - x1;dy &#61; y2 - y1;if ( dx * dx &#43; dy * dy > d * d ) return 0;if ( dx &#61;&#61; 0 && dy &#61;&#61; 0 )return map[x2][y2][t];if ( dx &#61;&#61; 0 ){if ( y1 > y2 ) swap(y1, y2);for ( i &#61; y1; i <&#61; y2; i&#43;&#43; )sum &#43;&#61; map[x2][i][t];return sum;}if ( dy &#61;&#61; 0 ){if ( x1 > x2 ) swap(x1, x2);for ( i &#61; x1; i <&#61; x2; i&#43;&#43; )sum &#43;&#61; map[i][y1][t];return sum;}g &#61; gcd ( abs(dx), abs(dy) );dx &#61; dx / g; dy &#61; dy / g;for ( i &#61; 0; i <&#61; g; i&#43;&#43; )sum &#43;&#61; map[x1&#43;i*dx][y1&#43;i*dy][t];return sum;
}int main()
{int i, j, x, y, t, mt;int sx, tx, sy, ty, ans;while ( scanf("%d%d%d",&n,&d,&m) ){if ( n &#43; d &#43; m &#61;&#61; 0 ) break;memset(map,0,sizeof(map));memset(dp,0,sizeof(dp));ans &#61; mt &#61; 0;for ( i &#61; 1; i <&#61; m; i&#43;&#43; ){scanf("%d%d%d",&x,&y,&t);map[x&#43;d][y&#43;d][t] &#61; 1;if ( t > mt ) mt &#61; t;}n &#61; n &#43; 2 * d;for ( t &#61; 1; t <&#61; mt; t&#43;&#43; ){for ( x &#61; 0; x &#61; n ? n - 1 : x &#43; d;sy &#61; y - d <0 ? 0 : y - d;ty &#61; y &#43; d >&#61; n ? n - 1 : y &#43; d;for ( i &#61; sx; i <&#61; tx; i&#43;&#43; ){for ( j &#61; sy; j <&#61; ty; j&#43;&#43; ){if ( (i-x)*(i-x) &#43; (j-y)*(j-y) <&#61; d*d )dp[x][y][t] &#61; max ( dp[x][y][t], get_sum ( i, j, x, y, t ) &#43; dp[i][j][t-1] );}}if ( t &#61;&#61; mt && dp[x][y][t] > ans ) ans &#61; dp[x][y][t];}}}printf("%d\n",ans);}return 0;
}


推荐阅读
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • Hanks博士是一位著名的生物技术专家,他的儿子Hankson对数学有着浓厚的兴趣。最近,Hankson遇到了一个有趣的数学问题,涉及求解特定条件下的正整数x,而不使用传统的辗转相除法。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 编程解析:CF989C 花朵之雾 (构造算法)
    本文深入探讨了CF989C '花朵之雾'问题的构造算法,提供了详细的解题思路和代码实现。 ... [详细]
  • 本文详细探讨了HihoCoder平台上的1398号问题——最大权闭合子图的求解方法。通过具体实例,深入分析了最大权闭合子图的概念及其算法实现。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 想把一组chara[4096]的数组拷贝到shortb[6][256]中,尝试过用循环移位的方式,还用中间变量shortc[2048]的方式。得出的结论:1.移位方式效率最低2. ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
author-avatar
ltxys
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有