poj 3034 Whac-a-Mole
来源:互联网 发布:seo伪原创怎么写 编辑:程序博客网 时间:2024/06/06 13:53
我是被搞郁闷了,一个状态转移方程不知道多早就推出来了,结果就超时了,然后看别人的博客,看到用gcd优化的方法,更改后,我在cmp里面写的<=结果一直运行错误(如果大神们知道也可以下面留言,在此谢了)。
状态转移方程 dp[i][x][y] = max(dp[i][x][y], dp[i-1][x1][y1]+sum); 这个非常简单,但是需要优化的地方很多,代码挺简单的,大家慢慢看吧。如果知道cmp那里那个问题的速度cell
me。
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#define max(a1,b1) (a1)>(b1)?(a1):(b1)using namespace std;int n,d,p,t,k,tot = 0;int map[11][50][50];int dp[11][50][50];struct Node{int dx,dy,dw;};Node ste[125];bool cmp(Node a,Node b){ return a.dw < b.dw;//就是这里 如果改成<=就直接无法运行。求指点}void ini(){ tot = 0; for(int i=-5;i<=5;++i) for(int j=-5;j<=5;++j) { int dw = i*i+j*j; if(dw<=25) { ste[tot].dx = i; ste[tot].dy = j; ste[tot].dw = dw; tot++; } }}int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a%b);}bool inmap(int x,int y){ if(0<=x&&x<k&&y>=0&&y<k) return true; return false;}int getSum(int i,int x,int y,int x1,int y1,int dx,int dy){ int sum = 0; do { x += dx; y += dy; sum += map[i][x][y]; } while(!(x==x1&&y==y1)); return sum;}int main(void){ ini(); sort(ste,ste+tot,cmp); while(cin>>n>>d>>p,n||d||p) { t = -1; memset(map,0,sizeof(map)); memset(dp,0,sizeof(dp)); for(int i=1;i<=p;++i) { int x1,y1,t1; scanf("%d %d %d",&x1,&y1,&t1); x1 += d; y1 += d; if(t1>t) t = t1; map[t1][x1][y1] = 1; } k = n+2*d; int x1,y1,dd = d*d,sum,dx,dy; for(int i=1;i<=t;++i) { for(int x=0;x<k;++x) for(int y=0;y<k;++y) { for(int e=0;e<tot&&ste[e].dw<=dd;++e) { dx = ste[e].dx; dy = ste[e].dy; x1 = x+dx; y1 = y+dy; if(inmap(x1,y1)) { if(e==0) sum = map[i][x][y]; else { int tmp = gcd(abs(dx),abs(dy)); dx /= tmp; dy /= tmp; sum = map[i][x][y] + getSum(i,x,y,x1,y1,dx,dy); } dp[i][x1][y1] = max(dp[i][x1][y1],dp[i-1][x][y]+sum); } } } } int ans = -1; for(int i=0;i<k;++i) for(int j=0;j<k;++j) if(dp[t][i][j]>ans) ans = dp[t][i][j]; cout<<ans<<endl; } return 0;}
- poj 3034 Whac-a-Mole
- POJ 3034 Whac-a-Mole
- POJ 3034 Whac-a-Mole
- POJ 3034 Whac-a-Mole
- poj 3034 Whac-a-Mole
- poj Whac-a-Mole
- POJ 3034 Whac-a-Mole DP
- poj 3034 Whac-a-Mole(dp)
- poj 3034 Whac-a-Mole(dp)
- 【POJ 3034】 Whac-a-Mole(DP)
- [poj 3034] Whac-a-Mole dp
- poj 3034 Whac-a-Mole dp
- POJ 3034 Whac-a-Mole(三维dp+处理小技巧)
- Poj3034 Whac-a-Mole
- POJ3034--Whac-a-Mole
- poj3034 Whac-a-Mole
- Whac-a-Mole(动态规划)
- pku 3034 Whac-a-Mole(扫描线上的点)
- 双链表
- OpenRisc-40-or1200的MMU模块分析
- 用数据回答客户常问的SEO问题
- [插件教程] Unity3D itween 缓动类简单用法解析教程插件下载
- MyEclipse+Tomcat 启动时出现 configuration error occured during startup错误的解决方法
- poj 3034 Whac-a-Mole
- gdalinfo 工具读取图像信息
- 每天在电脑面前超过四个小时必须做的事情
- POJ 1208 The Blocks Problem 栈模拟 练STL
- 《演讲之禅》读书笔记
- 程序员技术练级攻略
- hdu4466 Triangle
- oracle with子句
- Eclipse更新ADT22后,R.java文件无法自动生成的问题