题目链接

理解了题意之后,这个题感觉状态转移还是挺好想的,实现起来确实有点繁琐,代码能力还有待加强,经过很长时间才发现bug。注意坐标可能是负的。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <cmath>
 5 #include <algorithm>
 6 using namespace std;
 7 int dp[12][40][41];
 8 bool o[12][41][41];
 9 int n,ans,d;
10 int gcd(int a,int b)
11 {
12     return b == 0?a:gcd(b,a%b);
13 }
14 int fun(int t,int x,int y,int tx,int ty,int ax,int ay)
15 {
16     int temp = 0;
17     while(x != ax||y != ay)//开始这里写成&&
18     {
19         if(o[t+1][x][y])
20         temp ++;
21         x += tx;
22         y += ty;
23     }
24     return temp+o[t+1][x][y];
25 }
26 void judge(int t,int x,int y)
27 {
28     int i,j,g;
29     for(i = x-d;i <= x+d;i ++)
30     {
31         for(j = y-d;j <= y+d;j ++)
32         {
33            if((i-x)*(i-x)+(j-y)*(j-y) > d*d) continue;
34            if(i < 0||j < 0) continue;
35            if(i > n+10||j > n+10) continue;
36            g = gcd(abs(i-x),abs(j-y));
37            if(g == 0) g = 1;
38            int tx,ty;
39            tx = (i-x)/g;
40            ty = (j-y)/g;
41            dp[t+1][i][j] = max(dp[t+1][i][j],dp[t][x][y]+fun(t,x,y,tx,ty,i,j));
42            ans = max(dp[t+1][i][j],ans);
43         }
44     }
45 }
46 int main()
47 {
48     int m,i,j,k,y,x,t;
49     while(scanf("%d%d%d",&n,&d,&m)!=EOF)
50     {
51         if(n == 0&&d == 0&&m == 0) break;
52         memset(dp,0,sizeof(dp));
53         memset(o,0,sizeof(o));
54         for(i = 1; i <= m; i ++)
55         {
56             scanf("%d%d%d",&x,&y,&t);
57             o[t][x+5][y+5] = 1;
58         }
59         ans = 0;
60         for(i = 0; i <= 10; i ++)
61         {
62             for(j = 0; j < n+10; j ++)
63             {
64                 for(k = 0; k < n+10; k ++)
65                 {
66                     judge(i,j,k);
67                 }
68             }
69         }
70         printf("%d\n",ans);
71     }
72     return 0;
73 }

转载于:https://www.cnblogs.com/naix-x/p/3188582.html

POJ 3034 Whac-a-Mole(DP)相关推荐

  1. POJ 3034 Whac-a-Mole [DP]

    题意:略. 思路:第一次写的时候搞复杂了,弄得跟计算几何似的= = 递推公式很好想,就是dp[x2][y2][t] = max(dp[x2][y2][t], dp[x1][y1][t-1] + onl ...

  2. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  3. poj 3071 Football(概率dp)

    http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率.n次比赛的流程像这样France ...

  4. poj 2817 WordStack (状态dp)

    http://poj.org/problem?id=2817 这个题的意思是第一行给出case数N (1 <= N <= 10),然后给出N个单词,每个一行,当输入不是正整数的时候结束.每 ...

  5. POJ 3280 Cheapest Palindrome(DP 回文变形)

    题目链接:http://poj.org/problem?id=3280 题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价 Sample Input 3 4 ...

  6. POJ 1947 Rebuilding Roads (树dp + 背包思想)

    题目链接:http://poj.org/problem?id=1947 一共有n个节点,要求减去最少的边,行号剩下p个节点.问你去掉的最少边数. dp[u][j]表示u为子树根,且得到j个节点最少减去 ...

  7. poj 3590 The shuffle Problem——DP+置换

    题目:http://poj.org/problem?id=3590 bzoj 1025 的弱化版.大概一样的 dp . 输出方案的时候小的环靠前.不用担心 dp 时用 > 还是 >= 来转 ...

  8. POJ 3133 Manhattan Wiring(插头DP)

    题目链接:http://poj.org/problem?id=3133 题意:n*m的格子中有两个2和两个3,其余是空白或障碍.找出两条路径分别连接2和3,不经过障碍且不相交.使得两条路径长度和最短? ...

  9. POJ 1625 Censored ( Trie图 DP 高精度 )

    题意 : 给出 n 个单词组成的字符集 以及 p 个非法串,问你用字符集里面的单词构造长度为 m 的单词的方案数有多少种? 分析 : 与 POJ 2778 非常相似的一道题目,如果没有做过就尝试去了解 ...

最新文章

  1. Stylus插件开发教程 1
  2. 加载 Firefox 配置
  3. 文巾解题 881. 救生艇
  4. PHP中substr截取中文乱码解决方案
  5. 如何在 Dapper.NET 中使用事务?
  6. Loadruner压数据库oracle,LoadRunner连接Oracle数据库(转)
  7. Service 的生命周期;两种启动方法和区别
  8. 添加源ubuntu_x64 安装 Adobe Reader
  9. 家庭记账本开发进度4
  10. 数据结构与算法系列----字典树
  11. XML学习总结(一)——XML介绍
  12. 沙箱环境和测试环境区别_带你一图了解iOS应用内购买流程,掌握测试环境搭建与测试方法...
  13. 计算机软件评估资料,软件项目工作量评估方法 计算机软件及应用 IT计算机 专业资料.doc...
  14. 利用Powergui进行FFT Analysis,信号源为空解决方法
  15. Ubuntu 20.04 server乌班图服务器部署django,uwsgi,mysql,nginx细节
  16. java多线程(8):Lamda表达式
  17. 人工智能和机器学习在医疗领域中的应用
  18. DBN深度信念网络介绍
  19. python装饰器带参数函数二阶导数公式_SICP Python 描述 1.6 高阶函数
  20. Linux下PhysX3.4编译和环境搭建

热门文章

  1. KOFLive Beta Daily-Scrum 8
  2. 三天没有更新我的BLOG
  3. 目标检测学习笔记--DSSD算法
  4. IT技术能治病救人-数据是21世纪最伟大的药物
  5. 机器学习知识点(二十一)特征选择之岭回归和LASSO
  6. 离线轻量级大数据平台Spark之JavaRDD关联join操作
  7. 二维数组动态分配内存
  8. group by rollup 变量名为空值_【Python学习笔记】07、数据类型和变量
  9. Consul 服务注册与发现03—— 服务消费者
  10. BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示