R的农场(chebnear)
Posted kstt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R的农场(chebnear)相关的知识,希望对你有一定的参考价值。
R的农场
题目描述
最近,R 终于获得了一片他梦寐以求的农场,但如此大的一片农场,想要做好防卫工作可不是一件容易的事。所以 R 购买了 N 个守卫,分别让他们站在一定的位置上(守卫不可移动,同一位置上至多有一个守卫)。但是,安排了所有的守卫之后,R 才发现,守卫们彼此十分厌恶。经 R 研究,当某两个守卫距离≤K,他们就会发生争吵;但是,想要守卫们和解也是不难的——只需要 R 给出的平均工资能使两人满意,他们就会同意和解、成为
朋友;当然,如果两个守卫有共同的朋友,他们也会和解成为朋友。R 非常不想守卫们争吵,因此他想找出,在能使所有守卫闭嘴的前提下,平均工资的最小值是多少。他想到了一个绝妙的方法,但他忙着去 Farm,没时间,所以这个任务就交给你了。输入
输入
第1 行为三个数 N, M, K。
接下来 N 行为 N 个守卫的位置,每行包含两个实数 x, y (x≥0, y≥0)。
接下来 M 行,每行三个数,u, v, w,代表若平均工资≥w,则 u 和 v 同意和解。
输出
输出文件有且仅有一行,一个实数 p,代表最小的平均工资。
输入输出样例
chebnear.in
5 5 1.300
1.000 1.000
2.000 3.000
3.000 2.000
2.500 6.000
6.000 3.000
2 4 1.500
5 3 2.350
1 4 0.500
4 5 2.250
3 2 3.200
chebnear.out
2.350
反思
本来想用二分答案做到,虽然我确实这么做了,但是由于我没有写完立刻就编译,想着先写后面的再来写,结果......,没有写完,我觉得我写题都要写出毛病来了,每次打完道题目,总有七七八八的东西导致我编译过不了,特别是考试的时候,编译改错要花我好久的时间..
思路
这题的思路其实我还是懂了的
1.我们二分平均工资,把那些权值满足小于等于工资的点之间连上线(其实就是用并查集归类然后再去染色,相当与联通块的染色)
2.我们染色过后,根据最近点对(最近点对就是我们先按x即横坐标排序,求出中线,那么求点之间的最短距离只可能有3种情况1.在中线左边2.在中线右边3.跨过中线相连我们可以先算出2边的最短点对之间的距离,然后我们以这个距离为标准,向左向右分别寻找在该距离之内的点,然后判断就可以了,tips,这个也是递归实现的,因为我们在寻找左右的最短点对时,左右就相当与2个独立的区间,然后我们就在区间内寻找............),我们就可以判断该工资是否合法(如果2给点是相同颜色的,我们就不会更新)
3.最后我们二分寻找答案确定了答案的精度,输出就可以啦!
这题的思路我是懂了,但是实现起来还是有点难度,我先放在这里,先去落实别的题目
我会补的!!!
以上是关于R的农场(chebnear)的主要内容,如果未能解决你的问题,请参考以下文章