CCF - CCSP 2018-01 绝地求生 BFS
BFS从安全地区方向搞一下就好了
1.还是注意每回合清空
2.posx居然开小了,可不能犯这种错误
3.地图用a和节点的dis重名了,建议其他变量禁止用a命名
4.在输入数据之前continue了,这样会导致读数据混乱
5.注意距离还是用勾股定理那种,不是你想象的曼哈顿距离,火焰纹章玩多了吧
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <bitset>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
#define ll long long
#define mm0(a) memset(a,0,sizeof(a))
#define mm(a,b) memset(a,b,sizeof(a))
#define each(a,b,c) for(int a=b;a<=c;a++)
#define de(x) cout << #x << " " << (x) <<endl
//#define de(x) cout <<""
#define rush() int T;scanf("%d",&T);each(kase,1,T)
#define scan(a,b) scanf("%d%d",&a,&b)
#define fin(a) scanf("%d",&a)
using namespace std;
const int maxn = 400+5;
const int maxm = 1e5+5;
const int INF = 0x3f3f3f3f;
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;}
/**
4 2 4 1 1
0 3
1 1
2 2
3 0
1 2
2 0
2 3 2
1 3
3 3
n m e f h
*/
int distance(int x,int y,int sx,int sy)
{
return abs(x-sx)*abs(x-sx)+abs(y-sy)*abs(y-sy);
}
int n,m,e,f,h;
int a[maxn][maxn];
int vis[maxn][maxn];
int dis[maxn][maxn];
int dx[]={0,0,1,-1,1,1,-1,-1};
int dy[]={1,-1,0,0,-1,1,-1,1};
int posx[maxm];
int posy[maxm];///开小了
int life[maxm];
struct node
{
int x,y;
int dis;
node(int x,int y,int dis):x(x),y(y),dis(dis){}
};
int main()
{
scanf("%d%d%d%d%d",&n,&m,&e,&f,&h);
each(i,1,e)
{
int x,y;
scan(x,y);
a[x][y]=1;
}
each(i,1,m)
{
scanf("%d%d",&posx[i],&posy[i]);
}
each(i,1,m)
life[i]=h;
while(f--)
{
///每回合清空
mm0(vis);
memset(dis,INF,sizeof(dis));
int sx,sy,r;///又重名了!!!!
scan(sx,sy);
scanf("%d",&r);
queue<node>Q;
while(!Q.empty())Q.pop();
each(i,0,n-1)
{
each(j,0,n-1)
{
if(distance(i,j,sx,sy)<=r*r)
{
vis[i][j]=1;
dis[i][j]=0;
Q.push(node(i,j,0));
}
}
}
while(!Q.empty())
{
node q=Q.front();
Q.pop();
int x=q.x;
int y=q.y;
int curdis=q.dis;
int nx,ny;
for(int i=0;i<=7;i++)
{
nx=x+dx[i];
ny=y+dy[i];
if(!vis[nx][ny]&&nx>=0&&ny>=0&&nx<n&&ny<n&&a[nx][ny]==0)
{
if(abs(dx[i])!=abs(dy[i])||!(a[nx][y]==1&&a[x][ny]==1))
{
vis[nx][ny]=1;
dis[nx][ny]=curdis+1;///重名
Q.push(node(nx,ny,curdis+1));
}
}
}
}
each(k,1,m)
{
int xx,yy;
scan(xx,yy);
if(life[k]==0)continue;///错误3
int cost=dis[posx[k]][posy[k]];
if(cost>=life[k])
life[k]=0;
else life[k]-=cost;
posx[k]=xx;
posy[k]=yy;///错误4
}
}
each(i,1,m)
{
printf("%d\n",life[i]);
}
return 0;
}
CCF - CCSP 2018-01 绝地求生 BFS的更多相关文章
- “知乎杯”2018 CCF 大学生计算机系统与程序设计竞赛 绝地求生(battleground)
/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-ts ...
- kaggle——绝地求生游戏最终排名预测
绝地求生游戏最终排名预测 知识点 数据读取与预览 数据可视化 构建随机森林预测模型 导入数据并预览 先导入数据并预览.本次实验同样来源于 Kaggle 上的一个竞赛: 绝地求生排名预测 ,由于原始数据 ...
- 在moba游戏里面模拟实现绝地求生毒雾圈功能
---恢复内容开始--- 已经有很长一段时间没做项目了上半年大多数时间都荒废在王者荣耀,哈哈,S8赛季也上了王者,美滋滋 转回正题,公司需要开个新项目,需要把原有的moba游戏,改成类似绝地求生那玩法 ...
- 落入绝地求生的Python神仙,实现绝地求生无后座!
叙述 绝地求生已经出来那么久了,大家应该都晓得如今的游戏情形很是差 .特别在高端局,神仙满天飞 搞得很多人类玩家很是没有游戏体验! 由于绝地求生的火爆,繁衍出许多外挂流传于各个地方.飞机上.网吧内,各 ...
- 洗礼灵魂,修炼python(41)--巩固篇—从游戏《绝地求生-大逃杀》中回顾面向对象编程
声明:本篇文章仅仅以游戏<绝地求生>作为一个参考话题来介绍面向对象编程,只是作为学术引用,其制作的非常简易的程序也不会作为商业用途,与蓝洞公司无关. <绝地求生>最近很火,笼络 ...
- IDEA(2018.01)安装和破解
IDEA(2018.01)安装和破解 1.下载IDE https://www.jetbrains.com/idea/download/#section=windows 选择Ultimate版本 2.下 ...
- SUST OJ 1642: 绝地求生—死亡顺序
1642: 绝地求生-死亡顺序 时间限制: 1 Sec 内存限制: 128 MB提交: 81 解决: 53[提交][状态][讨论版] 题目描述 最近陕西科技大学六公寓的小东同学深深的入迷了一款游戏 ...
- 绝地求生大逃杀BE启动失败,应用程序无法正常启动
今日更新绝地求生大逃杀后部分客户反馈绝地求生点击启动提示BE安装,应用程序无法启动 问题原因:经过排查发现,客户开启过超级工作站运行过游戏,在系统镜像包中保留了旧版的BE服务,致使新版BE无法安装,冲 ...
- 《绝地求生大逃杀》BE错误怎么办 BE服务未正常运行及安装失败解决方法
<绝地求生大逃杀>BattlEye Launcher是游戏的反作弊程序,也是启动过程中做容易出现错误的,今天小编带来“爆锤吧务”分享的<绝地求生大逃杀>BE服务未正常运行及安装 ...
随机推荐
- MySql的Linux版安装
1,官网下载MySql的Linux版: 下载地址:http://dev.mysql.com//downloads/mysql/ 2.上传到Linux服务器,建议放在/opt/目录下 3.检查当前系统是 ...
- 【java中的final关键字】
转自:https://www.cnblogs.com/xiaoxi/p/6392154.html 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量 ...
- Jmeter Web 性能测试入门 (五):Jmeter 参数化 Request
用来参数化的常用方法: 添加配置元件:用户定义的变量 使用函数助手 添加配置元件:CSV Data Set Config 添加前置处理器:BeanShell PreProcessor 添加配置元件:用 ...
- 第11组 Alpha事后诸葛亮
第11组 Alpha事后诸葛亮 组长博客链接 https://www.cnblogs.com/xxylac/p/11924846.html 设想和目标 我们的软件要解决什么问题?是否定义得很清楚? ...
- UML期末复习题——2.8:UML Design Class Diagram(DCD)
第八题:设计类图 重要概念: 1. 类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系 ...
- c++拷贝文件-传统处理异常(学习)
#include <iostream>#include <stdio.h> using namespace std; int my_copy(const char* src_f ...
- 13 Flutter仿京东商城项目 商品列表筛选以及上拉分页加载更多
ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; imp ...
- OpenGL学习(3)——Shader(补)
完成章节后练习. 练习 1. Adjust the vertex shader so that the triangle is upside down. #version 330 core layou ...
- 热更新之lua框架设计
目前中大型游戏项目包含部分VR与AR项目,都需要热更新与在线修改Bug等功能实现,虽然Xlua等插件已经给出了关于C#与Lua语言之间的双向无缝调用实现,但是就热更新的架构却没有提出,这需要广大游戏公 ...
- 华为Fusioncompute 6.5.1
V6.5.1VRM“gandalf”用户的默认密码为“IaaS@OS-CLOUD9!”.CNA“gandalf”用户的默认密码为“IaaS@OS-CLOUD8!”.普通模式:admin/LaaS@PO ...