【Noip模拟 20161004】局域网
问题描述
所有SZSZ 学生翘首以盼的新教学楼总算快要竣工了,接下来到了网络布线的时候。网络系统的总布局是由nn台计算机组成的有线局域网,每根网线长度为dd,正常情况下,网线是可以缠绕使其变短但是不能拉长的,即每台计算机都能跟与它距离不超过dd的任何计算机通讯。
OIerOIer们试着一台一台地调试计算机网络,以构建整个局域网。有时在构建的过程中,他们需要测试一下某两台计算机能否通讯(如果他们能通过别的正常的计算机进行通 讯,也算他们之间可以通讯,即“能否通讯”可以是间接的)。作为OIerOIer,你自然也逃不掉模拟修复网络过程的任务,同时你还要回答“能否通讯”的询问。
输入格式
第一行两个整数,nn和dd,nn 表示计算机的数目,dd 表示网线的长度。接下来的nn行,每行两个整数Xi,YiXi,Yi,表示每台计算机的坐标。
接下来有许多行,每行都是一个操作(或者是修复操作,或者是询问操作)。
操作的格式如下:
O pO p 修复操作,表示修复编号为pp 的电脑;
S p qS p q 询问操作,询问编号为pp 和编号为qq 的电脑能否通讯。
以上操作,均保证1≤p≤n,1≤q≤n1≤p≤n,1≤q≤n
如果一台电脑尚未被修复,则它不能和任何电脑通讯。
输出格式
对于每个询问操作:如果能够通讯,输出一行SUCCESSSUCCESS;如果无法通讯, 输出一行FAILFAIL。
输入样例
3 1
0 1
0 2
0 3
O 1
O 3
S 1 3
O 2
S 1 3
输出样例
FAIL
SUCCESS
数据规模
设操作次数为qq
对于50%的数据,n≤300n≤300, q≤10000q≤10000;
对于100%的数据,n≤1001n≤1001, q≤300000q≤300000, 1≤d≤200001≤d≤20000, 0≤|xi|≤109,0≤|yi|≤1090≤|xi|≤109,0≤|yi|≤109。
题目分析
这一题给我留下了深深的阴影,倒也不是很难,就是很坑。我们要查找的是每两个点是否相等,如果你用旋转卡柯我没有办法,我的做法是用一个数组记录入图的点,然后把这些点用并查集维护即可。输出的时候判断一下两个点是否都已经被访问过了,三目输出即可。
坑点来了:我交了几发,发现自己爆零了,最后我发现:我在递归函数加了一个inline,然后我就死的很壮烈。记住:递归函数不要用这货。
代码实现
#include<bits/stdc++.h>
using namespace std;
#define RE register long long
#define int long long
#define N 1001
inline int read(){
register int x=;
register char c=getchar();
while(c<) c=getchar();
while(c>) x=x*+(c^),c=getchar();
return x;
}int x[N],y[N],f[N],n,d,p,q,top,a[N];
int vis[N];
int find(RE x){return f[x]==x?x:f[x]=find(f[x]);}
signed main(){
freopen("net.in","r",stdin),freopen("net.out","w",stdout);
n=read(),d=read();
for (RE i=;i<=n;++i) x[i]=read(),y[i]=read(),f[i]=i;
char c;
while(~scanf("%c",&c)){p=read();
if(c=='O'){
for (RE i=;i<=top;++i){q=a[i];
if ((x[p]-x[q])*(x[p]-x[q])+(y[p]-y[q])*(y[p]-y[q])<=d*d)
if (find(p)^find(q)) f[find(p)]=find(q);
}a[++top]=p,vis[p]=;
}else{q=read();
if (!vis[p]||!vis[q]) puts("FAIL");
else puts(find(p)==find(q)?"SUCCESS":"FAIL");
}
}return ;
}
代码分析
我的代码很容易看懂,不分析了。
哦,我还要讲我被绿的故事:1,开篇点题,引出本文“绿”的主旨。2,设置悬念,吸引读者阅读兴趣。3,采用了夸张的修辞手法,夸张了事情的严重性,使读者易于接受。
呃,其实没有啦,我们好着呢。
【Noip模拟 20161004】局域网的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- C++根据传入的函数指针来解析需要的参数
C++可以根据传入的函数指针,获取自己需要的参数类型,然后根据参数源中获取需要的参数,这里我用tuple作为演示,不过,只要可以根据序号,或者顺序方式等获取实参,都可以使用类似的方式实现: 先给出一个 ...
- [UE4]游戏中服务器切换地图,控制台命令Execute console Command
Execute console Command ServerTravel {地图名称}?listen 在服务器执行了这个命令,所有连接到该服务器的客户端都会跟着服务器同时切换到指定的地图. 1.创建一 ...
- 使用IDEA进行Lua代码调试、自动提示、代码跳转、智能重命名
试了几个Lua IDE后,Lua Studio.Lua Glider.VS+babelua插件.Sublime都不是特别满意.直到发现了国人自创的另一个神奇工具:基于IDEA的EmmyLua插件.该插 ...
- MySql 索引优化实例
查询语句 SELECT customer_id,title,content FROM `product_comment` WHERE audit_status=1 AND product_id=199 ...
- SAS infile 导入txt示例
概要说明: 以下代码包含的知识点: 1)ods 2)format picture 3)symputx ods pdf file="D:\fgroup\users\output\time.pd ...
- keras训练和保存
https://cloud.tencent.com/developer/article/1010815 8.更科学地模型训练与模型保存 filepath = 'model-ep{epoch:03d}- ...
- (转)Intellij IDEA 快捷键整理
[常规] Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关 ...
- 网络基础和python(二)
一,五层协议 应用层 端口 传输层 tcp\udp 网络层 ipv4\6 数据链路层 ethernet 物理层 mac 二:什么是变量? 变量:核心在于变和量儿字,变->变 ...
- Mysql 64位解压版的安装
先下载解压版的mysql 下载地址 https://dev.mysql.com/downloads/file/?id=474496 解压 进到里面新建这个文件夹和文件 打开my.ini文件(用文本编辑 ...
- switch嵌套--猜拳游戏
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...