A - Artwork (  并查集  )

题意:在一个n*m的房间里,有k个摄像头,每个摄像头给出坐标(x,y)和范围半径r , 小偷在左下角, 宝藏在右上角,问小偷能否成功偷到宝藏。

思路:可以把房间放到x-y坐标轴的第一象限, 这样小偷在(0,0) 宝藏zai(n,m), 我们先记录每一个圆和四周墙壁的相交情况,再通过并查集来确定圆和圆的关系, 如果圆1和上边界相交,圆2和下边界相交, 那么这个并查集的集合就把房间从竖直方向分开了, 小偷一定不能到达右上角。

代码:

#include <bits/stdc++.h>using namespace std;const int maxn = 1e3+10;
struct node {int x,y,r;int id;int up,down,left,right;
}a[maxn];
int x,y,n;
int pre[maxn];
int via[maxn];int root( int x )
{if ( x!=pre[x] ) {pre[x] = root(pre[x]);}return pre[x];
}int join( int a, int b )
{int aa = root(a);int bb = root(b);if ( aa!=bb ) {pre[aa] = bb;}
}int isnect( node a, node b )
{int dis = (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y);if ( (a.r+b.r)*(a.r+b.r)>=dis ) {return 1;}return 0;
}int main()
{int i,j,k;cin >> x >> y >> n;for ( i=0; i<n; i++ ) {scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].r);a[i].id = i;a[i].up=a[i].down=a[i].left=a[i].right=0;if ( a[i].x-a[i].r<=0 ) a[i].left = 1;if ( a[i].x+a[i].r>=x ) a[i].right = 1;if ( a[i].y-a[i].r<=0 ) a[i].down = 1;if ( a[i].y+a[i].r>=y ) a[i].up = 1;}for ( i=0; i<n; i++ ) pre[i] = i;for ( i=0; i<n; i++ ) {for ( j=0; j<i; j++ ) {if ( isnect(a[i],a[j])==1 ) {join(i,j);}}}int isp = 1;for ( i=0; i<n; i++ ) {if ( via[i]==0 ) {int nowleft=0,nowright=0,nowup=0,nowdown=0;via[i] = 1;int father = pre[i];if ( a[i].left==1 ) nowleft=1;if ( a[i].right==1 ) nowright=1;if ( a[i].up==1 ) nowup=1;if ( a[i].down==1 ) nowdown=1;for ( j=i+1; j<n; j++ ) {if ( via[j]==0 && pre[j]==father ) {if ( a[j].left==1 ) nowleft=1;if ( a[j].right==1 ) nowright=1;if ( a[j].up==1 ) nowup=1;if ( a[j].down==1 ) nowdown=1;}}if ( nowleft==1&&nowdown==1 ) isp=0;else if ( nowleft==1&&nowright==1 ) isp=0;else if ( nowup==1&&nowright==1 ) isp=0;else if ( nowup==1&&nowdown==1 ) isp=0;}}if ( isp==1 ) cout << "S" << endl;else cout << "N" << endl;return 0;
}

A - Artwork ( 并查集 )相关推荐

  1. gym:Problem A Artwork(并查集思维题)

    20162017-acmicpc-nordic-collegiate-programming-contest-ncpc-2016 Problem A Artwork 题目链接 http://codef ...

  2. ArtWork+并查集二维

    问题 A: ArtWork 时间限制: 4 Sec  内存限制: 128 MB 提交: 18  解决: 6 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 A template for ...

  3. ArtWork(并查集+降维)

    ArtWork 时间限制: 4 Sec  内存限制: 128 MB                                                                   ...

  4. CSU2020:Artwork(并查集)

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2022 题目: Description A template for an artwo ...

  5. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  6. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  7. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  8. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  9. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

最新文章

  1. 值传递 和 地址传递 的区别(好多句话才可以说清)
  2. matlab--离散(discrete)数据绘图
  3. [转帖]爬过这 6 个坡,你就能对 Linux 操作系统了如指掌
  4. BZOJ 3436 小K的农场 差分约束
  5. mpvue 微信小程序api_第三方框架与原生微信小程序开发框架性能之比较 | Q荐读...
  6. glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)
  7. 华南理工大学和浙大计算机学院,浙江大学和华南理工大学的办学实力比较
  8. [转]Laravel 4之URL生成
  9. 3. $()下的常用方法
  10. 使用 ADO.NET连接SQL Azure
  11. 轨迹压缩文献阅读: Similarity-Based Compression of GPS Trajectory Data
  12. Kafka和Unix管道的示例
  13. rpm、lpm是什么意思?
  14. 【H5】 svg的 defs用法 渐变
  15. c++多线程detach函数用法的实例
  16. 零度飘逸LDPY GhostWin7 Sp1纯净选择版V7.0(驱动增强版)
  17. Ubuntu进入登录界面鼠标键盘失灵
  18. 华为OD机试 - 德州扑克(Java JS Python)
  19. 山东计算机技能高考试题,(完整版)2016山东春季高考技能考试-信息技术类专业试题...
  20. csgo跑图文件_[CSGO]Neko社区:跑图服务器简易使用指南

热门文章

  1. mouseover和mouseout区别
  2. java 百家姓_java判断姓是否合格 百家姓
  3. Unity3D RectTransform中文图文详细-anchors用法pivot分析
  4. b站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发)
  5. 电商运营从哪些方面做数据分析?
  6. 全球域名商域名增量Top15:51DNS排名降至第十二
  7. 错误 C2248 “Bus::operator ()”: 无法访问 private 成员(在“Bus”类中声明)
  8. 【20210401】用Python的turtle库绘制呲牙表情包
  9. 关于协作与个人英雄主义
  10. 【Redis笔记】一起学习Redis | 如何利用Redis实现一个分布式锁?