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,如 ...
随机推荐
- POJ2503——Babelfish
Description You have just moved from Waterloo to a big city. The people here speak an incomprehensib ...
- Flex坐标
flash和flex针对不同的目的,提供了3种不同的坐标系. 全局的就是(stage级别的) 本地坐标系(组件级别的) 内容坐标系(相对于本地坐标系说的) 这些坐标系的点是可以转换的,并且有相应的方法 ...
- 【6】连续序列和为s
题目:输入一个整数s,打印出全部和为s的连续整数序列(至少含有2个数).比如输入9,则输出2.3.4和4.5两个序列 方案一:因为序列至少要2个数,则两个数上限值为(1+s)/2,我们能够枚举该序列的 ...
- 高斯混合和EM算法
首先介绍高斯混合模型: 高斯混合模型是指具有以下形式的概率分布模型: 一般其他分布的混合模型用相应的概率密度代替(1)式中的高斯分布密度即可. 给定训练集,我们希望构建该数据联合分布 这里,其中是概率 ...
- C++ 初始化与赋值
1.初始化与赋值的区别: 二者的区别不是看,是否有=这个赋值操作符,而是看操作的时候,对象是否已经有值. 初始化:创建对象,并给它设置初始值. 赋值:对象已经有值,擦除对象的当前值,并使用新值代替. ...
- cdoj 65 CD Making 水题
CD Making Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/65 De ...
- UVA 10499 (13.08.06)
Problem H The Land of Justice Input: standard input Output: standard output Time Limit: 4 seconds In ...
- maven项目编译漏掉src/main/java下的xml配置文件
在整合Spring + Mybatis框架的时候,自动扫描配置都已经配置好了. 配置如下: <?xml version="1.0" encoding="UTF-8& ...
- 在XAF应用程序使用现有的数据库?
https://documentation.devexpress.com/#Xaf/CustomDocument3061
- 你真的会使用SQL Server的备份还原功能吗?之二:主要备份类型
假设在下面几个时间段中,一个数据库积累插入了如下数据: 1.完整数据库备份 故名思意,完整数据库备份包括完整的数据库信息.它包括数据库的数据文件和备份结尾的部份活动事务日志. 完整备份基本语法如下: ...