题目大意:

一个王可以向周围8个方格走,如果都不通留在原地,t秒后,他可能存在的位置数

这题数据量过大,我们需要通过奇偶性判断,如果t = 0可以到达,说明 t=2,4,6.。。。都可以到达

所以我这用dp[N][N][2] 来记录x,y位置上奇数和偶数时间分别到达那点的最短时间,如果不存在,用-1表示

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <queue>
  5. using namespace std;
  6. const int N = ;
  7. int dp[N][N][],n,t,x,y,vis[N][N];
  8. char mat[N][N];
  9. int dir[][] = {{,},{-,},{,},{,-},{,-},{,},{-,},{-,-}};
  10.  
  11. struct Node{
  12. int x,y;
  13. Node(int x,int y):x(x),y(y){}
  14. };
  15.  
  16. queue<Node> q;
  17.  
  18. void bfs()
  19. {
  20. q.push(Node(x,y));
  21. vis[x][y] = ;
  22. while(!q.empty()){
  23. Node t = q.front();
  24. q.pop();
  25. vis[t.x][t.y]=;
  26.  
  27. for(int i=;i<;i++){
  28. int xx = t.x + dir[i][];
  29. int yy = t.y + dir[i][];
  30. if(xx>=&&xx<=n&&yy>=&&yy<=n&&mat[xx][yy] == '.'){
  31. int flag = ;
  32. if((dp[xx][yy][] < || dp[xx][yy][] > dp[t.x][t.y][] + ) && dp[t.x][t.y][] >= )
  33. {
  34. dp[xx][yy][] = dp[t.x][t.y][] + ;
  35. flag = ;
  36. }
  37. if((dp[xx][yy][] < || dp[xx][yy][] > dp[t.x][t.y][] + ) && dp[t.x][t.y][] >= )
  38. {
  39. dp[xx][yy][] = dp[t.x][t.y][] + ;
  40. flag = ;
  41. }
  42.  
  43. if(flag && !vis[xx][yy])
  44. {
  45. vis[xx][yy]=;
  46. q.push(Node(xx,yy));
  47. }
  48. }
  49. }
  50. }
  51. }
  52. int main()
  53. {
  54. //freopen("test.in","rb",stdin);
  55. //cout << "Hello world!" << endl;
  56. int C;
  57. scanf("%d",&C);
  58. while(C--){
  59. scanf("%d%d%d%d",&n,&t,&x,&y);
  60. for(int i=;i<=n;i++)
  61. scanf("%s",mat[i]+);
  62.  
  63. memset(vis,,sizeof(vis));
  64. memset(dp,-,sizeof(dp));
  65. dp[x][y][]=;
  66.  
  67. bfs();
  68.  
  69. int tmp = t&;
  70. int ans = ;
  71. for(int i=;i<=n;i++){
  72. for(int j=;j<=n;j++){
  73. if(dp[i][j][tmp]!=- && dp[i][j][tmp]<=t)
  74. ans++;
  75. }
  76. }
  77. printf("%d\n",max(ans,));
  78. }
  79. return ;
  80. }

HDU 4478 Where is King的更多相关文章

  1. hdu 5201 The Monkey King【容斥原理+组合数学】

    原来我一开始以为的\( O(n^2) \)是调和级数\( O(nlog_2n) \)的! 首先枚举猴王的桃子个数\( x \),然后使用容斥原理,枚举有至少\( k \)个不满足的条件,那么这\( k ...

  2. HDU - 1512  Monkey King

    Problem Description Once in a forest, there lived N aggressive monkeys. At the beginning, they each ...

  3. HDU 3861.The King’s Problem 强联通分量+最小路径覆盖

    The King’s Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. HDU 4489 The King's Ups and Downs

    HDU 4489 The King's Ups and Downs 思路: 状态:dp[i]表示i个数的方案数. 转移方程:dp[n]=∑dp[j-1]/2*dp[n-j]/2*C(n-1,j-1). ...

  5. HDU 4489 The King’s Ups and Downs dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4489 The King's Ups and Downs Time Limit: 2000/1000 ...

  6. HDU 5642 King's Order dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 King's Order  Accepts: 381  Submissions: 1361   ...

  7. HDU 5644 King's Pilots 费用流

    King's Pilots 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5644 Description The military parade w ...

  8. HDU 5643 King's Game 打表

    King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...

  9. HDU 5642 King's Order 动态规划

    King's Order 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 Description After the king's speec ...

随机推荐

  1. Optimizing Downloads for Efficient Network Access

    Optimizing Downloads for Efficient Network Access Previous  Next 1.This lesson teaches you to Unders ...

  2. 对char类型数组的英文字母进行冒泡排序

    import java.util.Arrays; import java.util.Scanner; public class Demo02 { public static void main(Str ...

  3. Oracle函数大全下载

    Oracle函数大全下载 是一个压缩包,里面是一个chm格式的帮助文档,很实用.

  4. js基础 -----鼠标事件(按下 拖拽)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. yii在Windows下安装(通过composer方式)

    Composer 安装: (Composer 不是一个包管理器,它仅仅是一个依赖管理工具.它涉及 "packages" 和 "libraries",但它在每个项 ...

  6. java实现的单点登录

    摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...

  7. SCCM大致安装过程,参考前辈教程完成部署

    本安装sccm主站点服务器准备 参考:http://stephen1991.blog.51cto.com/8959108/1529864 1.  准备三台服务器 ,注:所有服务器需要安装 .net3. ...

  8. Ubuntu Linux14 64位下在Android studio下用gradle编译Andrid项目时发生libz.so.1共享库找不到的解决方法。

    ---恢复内容开始--- 我在Ubuntu14 64为下安装了AS,但在用Gradle编译项目时总是报找不到 libz.so.1的错误. error while loading shared libr ...

  9. HDU_1237_简单计算器

    运算符为+,-,*,/:操作数为整数:且没有括号 设定符号优先级,先在栈底压运算符0 #include<iostream> #include<cstdio> #include& ...

  10. 获取select标签选中的值的三种方式

    var obj = document.getElementByIdx_x(”testSelect”); //定位id var index = obj.selectedIndex; // 选中索引 va ...