BFS从安全地区方向搞一下就好了

1.还是注意每回合清空

2.posx居然开小了,可不能犯这种错误

3.地图用a和节点的dis重名了,建议其他变量禁止用a命名

4.在输入数据之前continue了,这样会导致读数据混乱

5.注意距离还是用勾股定理那种,不是你想象的曼哈顿距离,火焰纹章玩多了吧

  1. #include <set>
  2. #include <map>
  3. #include <cmath>
  4. #include <queue>
  5. #include <bitset>
  6. #include <stack>
  7. #include <vector>
  8. #include <string>
  9. #include <cstdio>
  10. #include <cstdlib>
  11. #include <cstring>
  12. #include <iostream>
  13. #include <algorithm>
  14. #include <functional>
  15. #define ll long long
  16. #define mm0(a) memset(a,0,sizeof(a))
  17. #define mm(a,b) memset(a,b,sizeof(a))
  18. #define each(a,b,c) for(int a=b;a<=c;a++)
  19. #define de(x) cout << #x << " " << (x) <<endl
  20. //#define de(x) cout <<""
  21. #define rush() int T;scanf("%d",&T);each(kase,1,T)
  22. #define scan(a,b) scanf("%d%d",&a,&b)
  23. #define fin(a) scanf("%d",&a)
  24. using namespace std;
  25. const int maxn = 400+5;
  26. const int maxm = 1e5+5;
  27. const int INF = 0x3f3f3f3f;
  28. inline int read(){int s=0;char ch=getchar();for(; ch<'0'||ch>'9'; ch=getchar());for(; ch>='0'&&ch<='9'; ch=getchar())s=s*10+ch-'0';return s;}
  29. /**
  30. 4 2 4 1 1
  31. 0 3
  32. 1 1
  33. 2 2
  34. 3 0
  35. 1 2
  36. 2 0
  37. 2 3 2
  38. 1 3
  39. 3 3
  40. n m e f h
  41. */
  42. int distance(int x,int y,int sx,int sy)
  43. {
  44. return abs(x-sx)*abs(x-sx)+abs(y-sy)*abs(y-sy);
  45. }
  46. int n,m,e,f,h;
  47. int a[maxn][maxn];
  48. int vis[maxn][maxn];
  49. int dis[maxn][maxn];
  50. int dx[]={0,0,1,-1,1,1,-1,-1};
  51. int dy[]={1,-1,0,0,-1,1,-1,1};
  52. int posx[maxm];
  53. int posy[maxm];///开小了
  54. int life[maxm];
  55. struct node
  56. {
  57. int x,y;
  58. int dis;
  59. node(int x,int y,int dis):x(x),y(y),dis(dis){}
  60. };
  61. int main()
  62. {
  63. scanf("%d%d%d%d%d",&n,&m,&e,&f,&h);
  64. each(i,1,e)
  65. {
  66. int x,y;
  67. scan(x,y);
  68. a[x][y]=1;
  69. }
  70. each(i,1,m)
  71. {
  72. scanf("%d%d",&posx[i],&posy[i]);
  73. }
  74. each(i,1,m)
  75. life[i]=h;
  76. while(f--)
  77. {
  78. ///每回合清空
  79. mm0(vis);
  80. memset(dis,INF,sizeof(dis));
  81. int sx,sy,r;///又重名了!!!!
  82. scan(sx,sy);
  83. scanf("%d",&r);
  84. queue<node>Q;
  85. while(!Q.empty())Q.pop();
  86. each(i,0,n-1)
  87. {
  88. each(j,0,n-1)
  89. {
  90. if(distance(i,j,sx,sy)<=r*r)
  91. {
  92. vis[i][j]=1;
  93. dis[i][j]=0;
  94. Q.push(node(i,j,0));
  95. }
  96. }
  97. }
  98. while(!Q.empty())
  99. {
  100. node q=Q.front();
  101. Q.pop();
  102. int x=q.x;
  103. int y=q.y;
  104. int curdis=q.dis;
  105. int nx,ny;
  106. for(int i=0;i<=7;i++)
  107. {
  108. nx=x+dx[i];
  109. ny=y+dy[i];
  110. if(!vis[nx][ny]&&nx>=0&&ny>=0&&nx<n&&ny<n&&a[nx][ny]==0)
  111. {
  112. if(abs(dx[i])!=abs(dy[i])||!(a[nx][y]==1&&a[x][ny]==1))
  113. {
  114. vis[nx][ny]=1;
  115. dis[nx][ny]=curdis+1;///重名
  116. Q.push(node(nx,ny,curdis+1));
  117. }
  118. }
  119. }
  120. }
  121. each(k,1,m)
  122. {
  123. int xx,yy;
  124. scan(xx,yy);
  125. if(life[k]==0)continue;///错误3
  126. int cost=dis[posx[k]][posy[k]];
  127. if(cost>=life[k])
  128. life[k]=0;
  129. else life[k]-=cost;
  130. posx[k]=xx;
  131. posy[k]=yy;///错误4
  132. }
  133. }
  134. each(i,1,m)
  135. {
  136. printf("%d\n",life[i]);
  137. }
  138. return 0;
  139. }

CCF - CCSP 2018-01 绝地求生 BFS的更多相关文章

  1. “知乎杯”2018 CCF 大学生计算机系统与程序设计竞赛 绝地求生(battleground)

    /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-ts ...

  2. kaggle——绝地求生游戏最终排名预测

    绝地求生游戏最终排名预测 知识点 数据读取与预览 数据可视化 构建随机森林预测模型 导入数据并预览 先导入数据并预览.本次实验同样来源于 Kaggle 上的一个竞赛: 绝地求生排名预测 ,由于原始数据 ...

  3. 在moba游戏里面模拟实现绝地求生毒雾圈功能

    ---恢复内容开始--- 已经有很长一段时间没做项目了上半年大多数时间都荒废在王者荣耀,哈哈,S8赛季也上了王者,美滋滋 转回正题,公司需要开个新项目,需要把原有的moba游戏,改成类似绝地求生那玩法 ...

  4. 落入绝地求生的Python神仙,实现绝地求生无后座!

    叙述 绝地求生已经出来那么久了,大家应该都晓得如今的游戏情形很是差 .特别在高端局,神仙满天飞 搞得很多人类玩家很是没有游戏体验! 由于绝地求生的火爆,繁衍出许多外挂流传于各个地方.飞机上.网吧内,各 ...

  5. 洗礼灵魂,修炼python(41)--巩固篇—从游戏《绝地求生-大逃杀》中回顾面向对象编程

    声明:本篇文章仅仅以游戏<绝地求生>作为一个参考话题来介绍面向对象编程,只是作为学术引用,其制作的非常简易的程序也不会作为商业用途,与蓝洞公司无关. <绝地求生>最近很火,笼络 ...

  6. IDEA(2018.01)安装和破解

    IDEA(2018.01)安装和破解 1.下载IDE https://www.jetbrains.com/idea/download/#section=windows 选择Ultimate版本 2.下 ...

  7. SUST OJ 1642: 绝地求生—死亡顺序

    1642: 绝地求生-死亡顺序 时间限制: 1 Sec  内存限制: 128 MB提交: 81  解决: 53[提交][状态][讨论版] 题目描述 最近陕西科技大学六公寓的小东同学深深的入迷了一款游戏 ...

  8. 绝地求生大逃杀BE启动失败,应用程序无法正常启动

    今日更新绝地求生大逃杀后部分客户反馈绝地求生点击启动提示BE安装,应用程序无法启动 问题原因:经过排查发现,客户开启过超级工作站运行过游戏,在系统镜像包中保留了旧版的BE服务,致使新版BE无法安装,冲 ...

  9. 《绝地求生大逃杀》BE错误怎么办 BE服务未正常运行及安装失败解决方法

    <绝地求生大逃杀>BattlEye Launcher是游戏的反作弊程序,也是启动过程中做容易出现错误的,今天小编带来“爆锤吧务”分享的<绝地求生大逃杀>BE服务未正常运行及安装 ...

随机推荐

  1. IDEA配置Hadoop开发环境&编译运行WordCount程序

    有关hadoop及java安装配置请见:https://www.cnblogs.com/lxc1910/p/11734477.html 1.新建Java project: 选择合适的jdk,如图所示: ...

  2. 在testrpc以太坊测试环境部署智能合约

    2018年03月13日 09:20:54 思无邪-machengyu 阅读数 2683   版权声明:本文为博主原创文章,转载请务必注明出处,否则追究法律责任 https://blog.csdn.ne ...

  3. php学习之Model类

    <?php $config = include 'config.php'; //引入数据库配置文件 $model = new Model($config); //测试案例 // $saveDat ...

  4. 完全背包---P1679 神奇的四次方数

    P1679 神奇的四次方数 题解 一看这就是个完全背包 m最多不会超过18^4,所以我们把x^4用数组存起来,然后考虑如何填满m,注意存到18^4,不然会像我一样RE... 那么问题就转化成完全背包问 ...

  5. List 的删除

    List 不要在循环中使用remove 删除.可以新加一个List ,把符合条件的元素加入到这个list 中,然后调用removeAll . 比如:(增强for 循环需要判断 list 是否是 nul ...

  6. 《图解 HTTP》读书笔记

    <图解 HTTP>一书是日本学者上野宣所著,2014 年由于均良先生翻译并在国内出版.因为作者使用十分生动的语言和浅显易懂的案例将 HTTP 协议讲解得深入浅出,所以深受开发者喜爱.现在在 ...

  7. []how to use caffe model with TensorRT c++

    //IHostMemory *gieModelStream {nullptr}; //const char* prototxt = "./googlenet/test_20181010.pr ...

  8. Vue学习笔记(三)组件间如何通信传递参数

    一:父组件向子组件传递参数 <template > <div id="app"> <h1 v-text="title">&l ...

  9. 在Flutter中构建布局

    这是在Flutter中构建布局的指南.首先,您将构建以下屏幕截图的布局.然后回过头, 本指南将解释Flutter的布局方法,并说明如何在屏幕上放置一个widget.在讨论如何水平和垂直放置widget ...

  10. Linux 基本权限管理

    1.linux权限表示: -rw-r--r-- (一共10位): 第一位:表示文件类型: 常用的三种文件类型:- 表示一般文件,d 表示目录,l 表示软链接文件: 后九位:每三位为一组: rwx r- ...