HDU 3832 Earth Hour
大意:给定一些灯泡,灯泡的照明范围是R,当两个圆相切或者相交时可以看做一个连通的,问最多可以去掉多少个灯泡使得剩下的3个圆还是连通的。
思路:把圆看做顶点,判断圆是否相交,如果相交,赋边权为1,然后枚举一个定点到三个点的最小值,用总数减去最小值减1即是答案。
/*最短路;三点连通*/ #include <iostream> #include <cstdlib> #include <cstdio> #include <string> #include <cstring> #include <cmath> #include <vector> #include <queue> #include <stack> #include <algorithm> #include <map> using namespace std;const int INF = 0x3f3f3f3f; const int maxn = 210; const int maxm = 1000*1000;typedef int LL;struct Edge {LL v;LL w;LL next; }edge[maxm];LL cnt;LL n, m;LL first[maxn]; LL d1[maxn], d2[maxn], d3[maxn];void read_graph(LL u, LL v, LL w) {edge[cnt].v = v, edge[cnt].w = w;edge[cnt].next = first[u], first[u] = cnt++; }void spfa(int src, int *d) {queue<int> q;bool inq[maxn] = {0};for(int i = 1; i <= n; i++) d[i] = (i == src)?0:INF;q.push(src);while(!q.empty()){int x = q.front(); q.pop();inq[x] = 0;for(int e = first[x]; e != -1; e = edge[e].next){int v = edge[e].v, w = edge[e].w;if(d[v] > d[x] + w){d[v] = d[x] + w;if(!inq[v]){inq[v] = 1;q.push(v);}}}} }void init() {cnt = 0;memset(first, -1, sizeof(first)); }struct Point {double x, y;double R; }A[maxn];const double eps = 1e-8;double sqr(double x) { return x*x; } double Dist(Point a, Point b) { return sqrt(sqr(a.x-b.x) + sqr(a.y-b.y)); }int dcmp(double x) { if(fabs(x) < eps) return 0; else return x < 0? -1 : 1; }void read_case() {init();scanf("%d", &n);for(int i = 1; i <= n; i++) scanf("%lf%lf%lf", &A[i].x, &A[i].y, &A[i].R);for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++) if(i != j){double t = Dist(A[i], A[j]);if(dcmp(t-A[i].R-A[j].R) <= 0) read_graph(i, j, 1), read_graph(j, i, 1);}} }void solve() {read_case();spfa(1, d1); spfa(2, d2); spfa(3, d3);int ans = INF;for(int i = 1; i <= n; i++){if(d1[i] != INF && d2[i] != INF && d3[i] != INF)ans = min(ans, d1[i]+d2[i]+d3[i]);}if(ans < INF) printf("%d\n", n-ans-1);else printf("-1\n"); }int main() {int T;scanf("%d", &T);while(T--){solve();}return 0; }
转载于:https://www.cnblogs.com/Buck-Meister/archive/2013/04/28/3049585.html
HDU 3832 Earth Hour相关推荐
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 一系列图论问题[转]
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- kk_想要学习的知识
2018/4/27 计算几何 一.简介 计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往 ...
- 图论练习题(存起来练)
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Man ...
- ACM比赛经验、刷题记录及模板库总结(更新中)
前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...
- 最短路径问题经典题目汇总
50道数据结构最短路径问题 HDU 1142 http://acm.hdu.edu.cn/showproblem.php?pid=1142 HDU 1217 http://acm.hdu.edu.cn ...
- hdu 2594 kmp
这个题和kmp算法的共同点,也就是可以用kmp解的原因,在于当前缀所在串(kmp中的模式串)字符pj≠后缀所在串(kmp中文本串)字符tj时,应使前缀串(kmp中模式串)尽量往右移动最大位移,而暴力算 ...
最新文章
- 利用人工智能(Magpie开源库)给一段中文的文本内容进行分类打标签
- OpenCV resize函数源码解析——加速方法
- 解决python2.7 UnicodeEncodeError报错
- 海淀城市大脑建设单位“中海纪元”调研“智源研究院”
- c++ 大数类 大数模板
- POJ 3615 floyd 求任意起点终点的最短路
- smzdm 扫地机器人_堪称米家最值!米家系列扫地机器人选购须知
- 【OpenCV】OpenCV实战从入门到精通之 -- 基本图像绘制
- Hyperledger发布Burrow新版本,改进集成和开发体验
- Unity lightmap shader
- 能写个简单的oa系统java_基于jsp的轻量级OA系统-JavaEE实现轻量级OA系统 - java项目源码...
- 用户'MYCOMPUTER\ASPNET' 登录失败”的解决方法
- LinkedList的线程安全解决办法
- 鼠标钩子WH_MOUSE_LL
- 程序员应该掌握的英语词汇
- mysql explain 类似_Oracle有没有类似MySQL中的explain功能
- 办公台式计算机配置费用,原来这才是办公台式机需要的性能?
- 领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力
- Android 图像识别之OCR识别身份证,银行卡等证件信息
- ElasticSearch7.10配置Search-Guard之配置用户
热门文章
- 虚拟服务器的外部跟内部端口,虚拟服务器设置 外部端口
- (1)非对称加密——RSA——史上最通俗的小白可看懂!
- 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS-系统概述
- c语言规定学号长度,c语言第1-9章基本概念练习题ans(最全).docx
- linux shell 十进制转十六进制_问1得10:shell十进制转换到任意进制,多大事儿,一行搞定!
- csr 蓝牙驱动_双11来临之际,推荐几款无线蓝牙耳机吧
- ajax返回功能,jquery – 记得ajax在点击返回按钮时添加的数据
- android测试测试什么,1,web测试,Android测试,Ios测试的共同点与
- Python-Matplotlib可视化(6)——自定义坐标轴让统计图清晰易懂
- jdom解析xml文件_JDOM编辑XML文件示例