####Description

Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫。
为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木桩之间绕上藩篱以困住这些猫。
一段时间后,Zjr506在绕了M个藩篱后兴高采烈的离开了。作为正义的使者,Ztxz16不忍心看到这些猫受到折磨,于是决定拆除一些藩篱让所有的猫都逃出去。因为Zjr506的巧妙设计,藩篱不会在除木桩之外的地方相交。这些藩篱构成了一些封闭的区域,每一个区域中都有一只猫。
因为Zjr506制造这些藩篱也不容易,所以Ztxz16希望拆除的藩篱总长度尽量小,现在他希望你告诉他最小的总长度。

####Input

第一行两个数 n,m ( 2<=n<=10000 , 1<=m<=50000 )
接下来 n 行 , 每行两个整数 xi,yi, 代表第 i 个木桩的坐标 ( − 10000 ≤ xi, yi ≤ 10000).
接下来 m 行,每行两个整数 pi,qi (1 ≤ pj, qj ≤ N) , 代表木桩 pi 与木桩 qi 之间有一个藩篱。

####Output

输出一个实数代表答案,当答案与标准答案差的绝对值不超过0.001时认为它是正确的。

####Sample Input

8 8
0 0
3 0
3 3
0 3
1 1
1 2
2 2
2 1
1 2
2 3
3 4
4 1
5 6
6 7
7 8
8 5

####Sample Output

4.000000000

####Data Constraint

对于20%的数据:
N , M <= 30
对于30%的数据:
N, M <= 300
对于100%的数据:
N <= 10000, M <= 50000

###题解
首先,看到题目以为是什么暴力搜索或是什么玄学的东东,但是转念一看,发现是要删边,再认真看看,原来是给出很多条边,然后去掉比较小的边,让整个图没有环。
正着去看,发现去掉小边比较麻烦,那么就反着来看。
于是本题就变成了求最大生成树。(很类似)
我们怎么做呢?
首先先排个序,然后一条一条边加入图中,若是当前边加入了之后就出现环,那么就不加入。答案就把这条边的距离加上。用题目的话来说就是把这条栏杆给去掉。
正确性?
因为当前边是当前环(连上了之后)最小的边,去掉其他的边不是更优的,所以去掉当前边是最优解。
那么如何判断是一个环?就直接用一个简单的并查集即可。

Code:

typenew=recordx:longint;y:longint;long:extended;end;
varf:array[1..100001] of longint;a:array[0..100001] of new;e:array[0..100001,1..2] of longint;i,j,k,n,m,x,y,c:longint;ans:extended;
procedure qsort(l,r:longint);
varx,y:longint;m:extended;
beginx:=l;y:=r;m:=a[(l+r) div 2].long;repeatwhile a[x].long>m do inc(x);while a[y].long<m do dec(y);if x<=y thenbegina[0]:=a[x];a[x]:=a[y];a[y]:=a[0];inc(x);dec(y);end;until x>y;if l<y then qsort(l,y);if r>x then qsort(x,r);
end;
function fu(z:longint):longint;
varx,y:longint;
beginy:=z;while y<>f[y] do y:=f[y];while z<>y dobeginx:=f[z];f[z]:=y;z:=x;end;exit(y);
end;
beginreadln(n,m);for i:=1 to n dobeginreadln(x,y);e[i,1]:=x;e[i,2]:=y;end;for i:=1 to m dobeginreadln(x,y);a[i].x:=x;a[i].y:=y;a[i].long:=sqrt(sqr(e[x,1]-e[y,1])+sqr(e[x,2]-e[y,2]));end;qsort(1,m);for i:=1 to n do f[i]:=i;ans:=0;for i:=1 to m dobeginj:=fu(a[i].x);k:=fu(a[i].y);if j<>k thenbeginf[j]:=k;endelsebeginans:=ans+a[i].long;end;end;writeln(ans:0:9);
end.

转载于:https://www.cnblogs.com/RainbowCrown/p/11148419.html

2017.08.19【NOIP提高组】模拟赛B组 【雅礼联考GDOI2017模拟】Zjr506的捕猫计划相关推荐

  1. JZOJ4740. 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划(2017.8B组)

    https://jzoj.net/senior/#main/show/4740 想法: 答案就是让留下来的边尽量打,等于所有边的长度-没有环的树的长度,所以打一棵最大生成树,如果保证2个点不属于同一棵 ...

  2. JZOJ 4740 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划

    Zjr506的捕猫计划 题目大意 给出有nn个点,mm条边的一个图,现在要删掉一些边,使得该图内没有环,问实现目标的最小代价.(代价即为删掉的边的总长度) 数据范围 NN<=1000010000 ...

  3. JZOJsenior4740.【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划

    Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫. 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些 ...

  4. 【雅礼联考GDOI2017模拟】Zjr506的捕猫计划

    Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫. 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些 ...

  5. 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划

    Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫. 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些 ...

  6. jzoj4739-[雅礼联考GDOI2017模拟9.2]Ztxz16学图论【LCT,树状数组】

    正题 题目链接:https://gmoj.net/senior/#main/show/4739 题目大意 nnn个点mmm条边的一张图,qqq次询问一个区间的边可以形成多少连通块. 解题思路 询问按照 ...

  7. GDOI模拟 Zjr506的捕猫计划

    Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫.为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木 ...

  8. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  9. 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结

    2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...

最新文章

  1. 如何成为一名Android架构师,乃至高级架构师,文末有路线图
  2. 面试官:精通 Mybatis?请回答下这几个问题
  3. 十八、redis.conf配置详解
  4. Servlet Cookie处理
  5. Leetcode-Merge k Sorted Lists
  6. 原生js实现一个tab栏的标签操作
  7. mac os 设置汇总
  8. 高通平台Bring-up
  9. 数据库知识点总结归纳
  10. 电气工程类中文核心期刊
  11. Xshell6、Xftp6【官方免费版】下载
  12. Rust异步之Future
  13. RxSwift学习(三)— Observer、Binder、Subjects、BehaviorRelay
  14. 灵魂站队:结婚,男的压力大,还是女的压力大?
  15. 【论文阅读01】2021 兵棋推演的智能决策技术与挑战 尹奇跃
  16. java实现抓包jacap_java 抓包工具 jpcap的下载与eclipse配置
  17. iphone 微信打开H5自动播放音乐问题
  18. 虹口区企业技术中心认定条件及奖励政策解读
  19. 西北工业大学-技术经济学-MOOC课程截图笔记
  20. 一款关联钉钉打卡作弊软件非法获利近 500 万元,CEO 被判刑 5 年 6 个月!

热门文章

  1. Spring的脚手架工程搭建
  2. 设计模式(九)模版方法模式
  3. React Native 0.60以上集成code push热更新
  4. Java-实现万年历
  5. uwsgs loading shared libraries: libicui18n.so.58 异常处理
  6. java在gradle工程访问src/test/resources目录下的资源配置文件
  7. 麒麟970升级鸿蒙无望,从5399降到1349元,麒麟970+128G+升级鸿蒙OS,网友:终于等到了...
  8. python测试程序运行时间_Python如何测量脚本运行时间
  9. c语言中19可以用什么字母表示什么意思,C语言中的 @ 符号是什么意思?
  10. java最快的orm框架_java有哪些简洁的ORM框架?