poj 3034 动态规划
思路:这是一道坑爹的动态规划,思路很容易想到,就是细节。
用dp[t][i][j],表示在第t时间,锤子停在(i,j)位置能获得的最大数量。那么只要找到一个点转移到(i,j)收益最大即可。
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<cstdio>
#include<vector>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pb push_back
#define mp make_pair
#define Maxn 2000010
#define Maxm 80002
#define LL __int64
#define Abs(x) ((x)>0?(x):(-x))
#define lson(x) (x<<1)
#define rson(x) (x<<1|1)
#define inf 100000
#define lowbit(x) (x&(-x))
#define Mod 1000000007
using namespace std;
int dp[][][],g[][][];
int get_num(int t,int x1,int y1,int x2,int y2)
{
int i,j;
if(x1>x2){
swap(x1,x2);
swap(y1,y2);
}
int l,r,sum=;
if(x1==x2){
l=min(y1,y2);
r=max(y1,y2);
for(i=l;i<=r;i++){
sum+=g[t][x1][i];
}
return sum;
}
if(y1==y2){
l=min(x1,x2);
r=max(x1,x2);
for(i=l;i<=r;i++){
sum+=g[t][i][y1];
}
return sum;
}
for(i=x1;i<=x2;i++){
if((i-x1)*(y2-y1)%(x2-x1)==){
sum+=g[t][i][(i-x1)*(y2-y1)/(x2-x1)+y1];
}
}
return sum;
}
int main()
{
int n,d,m,t,i,j,x,y,z,k,T;
while(scanf("%d%d%d",&n,&d,&m)!=EOF,n||m||d){
memset(dp,,sizeof(dp));
memset(g,,sizeof(g));
T=;
int ans=;
for(i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
g[z][x+d+][y+d+]=;
T=max(T,z);
}
n+=*d+;
for(t=;t<=T;t++){
for(i=;i<=n;i++){
for(j=;j<=n;j++){
for(x=i-d;x<=i+d;x++){
for(y=j-d;y<=j+d;y++){
if(x<=||x>n||y<=||y>n) continue;
if((x-i)*(x-i)+(y-j)*(y-j)<=d*d){
dp[t][i][j]=max(dp[t][i][j],dp[t-][x][y]+get_num(t,i,j,x,y));
ans=max(ans,dp[t][i][j]);
}
}
}
}
}
}
printf("%d\n",ans);
}
return ;
}
poj 3034 动态规划的更多相关文章
- nyoj 17-单调递增最长子序列 && poj 2533(动态规划,演算法)
17-单调递增最长子序列 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:21 submit:49 题目描述: 求一个字符串的最长递增子序列的长度 如 ...
- poj 2498 动态规划
思路:简单动态规划 #include<map> #include<set> #include<cmath> #include<queue> #inclu ...
- poj 2287 动态规划
用贪心简单证明之后就是一个从两头取的动态规划 #include <iostream> #include <cstring> #include <cstdio> #i ...
- (中等) POJ 3034 Whac-a-Mole,DP。
Description While visiting a traveling fun fair you suddenly have an urge to break the high score in ...
- POJ 3034 Whac-a-Mole
Whac-a-Mole Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3070 Accepted: 922 Descriptio ...
- POJ 2533 动态规划入门 (LIS)
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42914 Accepte ...
- POJ 3034 Whac-a-Mole(DP)
题目链接 理解了题意之后,这个题感觉状态转移还是挺好想的,实现起来确实有点繁琐,代码能力还有待加强,经过很长时间才发现bug.注意坐标可能是负的. #include <cstdio> #i ...
- POJ 3034 Whac-a-Mole(DP)
题目链接 题意 : 在一个二维直角坐标系中,有n×n个洞,每个洞的坐标为(x,y), 0 ≤ x, y < n,给你一把锤子可以打到地鼠,最开始的时候,你可以把锤子放在任何地方,如果你上一秒在( ...
- poj 1821 动态规划
思路:每次枚举每个工人的右边界j,维护最优的左边界k.那么dp[j]=max(dp[j],dp[k]+(j-k)*w[i].p): 对于每个工人的初值k=w[i].s-1; 令x=j-w[i].l,如 ...
随机推荐
- C#扫描仪编程、条形码识别编程资料
扫描仪编程资料:http://www.cnblogs.com/wubh/archive/2011/11/07/2239178.html 图片条形码识别资料:http://www.codeproject ...
- ActiveMQ集成到Spring
[http://wentao365.iteye.com/blog/1560934] spring配置文件applicationContext.xml <?xml version="1. ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.5 Delete删除用户]
3.5 Delete删除用户 删除也是通过ObjectID获得对象进行删除 [Authorize] public async Task<ActionResult> Delete(strin ...
- C#.Net中的非托管代码清理
帮助其它项目组Review代码过程,发现有些地方实现了IDispose接口,同时也发现了一些关于IDispose的问题: 1.A类型实现了IDispose接口,B类型里面含有A类型的字段,B类型没有实 ...
- EasyMock使用说明
来自官网的使用说明,原文见http://www.easymock.org/EasyMock2_0_Documentation.html 1.1. 准备 大多数的软件系统都不是单独运行的,它们都需要于其 ...
- Hard problem
1022: Hard problem Time Limit: 1 Sec Memory Limit: 128 MB Submit: 43 Solved: 12 Description The ...
- redis-在乌班图下设置自动启动
一.修改redis.conf 1.打开后台运行选项,默认情况下,Redis不在后台运行: daemonize yes 2.配置log文件地址,默认使用标准输入,即打印在命令行终端 的窗口上 logfi ...
- Apache与Tomcat 区别联系
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是web服 ...
- Eclipse和Android Studio中的DDMS使用时什么不同?
http://www.jb51.net/softjc/454131.html Eclipse和Android Studio中的DDMS使用时什么不同? 相信很多经常开发Android应用的朋友应该都接 ...
- 【开发实例】C#调用SAPI实现语音合成的两种方法
我们都知道现在的语音合成TTS是可以通过微软的SAPI实现的,好处我就不多说了,方便而已,因为在微软的操作系统里面就自带了这个玩意,主要的方式有两种: 1.使用COM组件技术,不管是C++,C#,D ...