C. Recycling Bottles
time limit per test:

2 seconds

memory limit per test:

256 megabytes

input:

standard input

output:

standard output

It was recycling day in Kekoland. To celebrate it Adil and Bera went to Central Perk where they can take bottles from the ground and put them into a recycling bin.

We can think Central Perk as coordinate plane. There are n bottles on the ground, the i-th bottle is located at position (xi, yi). Both Adil and Bera can carry only one bottle at once each.

For both Adil and Bera the process looks as follows:

  1. Choose to stop or to continue to collect bottles.
  2. If the choice was to continue then choose some bottle and walk towards it.
  3. Pick this bottle and walk to the recycling bin.
  4. Go to step 1.

Adil and Bera may move independently. They are allowed to pick bottles simultaneously, all bottles may be picked by any of the two, it's allowed that one of them stays still while the other one continues to pick bottles.

They want to organize the process such that the total distance they walk (the sum of distance walked by Adil and distance walked by Bera) is minimum possible. Of course, at the end all bottles should lie in the recycling bin.

Input

First line of the input contains six integers axaybxbytx and ty (0 ≤ ax, ay, bx, by, tx, ty ≤ 109) — initial positions of Adil, Bera and recycling bin respectively.

The second line contains a single integer n (1 ≤ n ≤ 100 000) — the number of bottles on the ground.

Then follow n lines, each of them contains two integers xi and yi (0 ≤ xi, yi ≤ 109) — position of the i-th bottle.

It's guaranteed that positions of Adil, Bera, recycling bin and all bottles are distinct.

Output

Print one real number — the minimum possible total distance Adil and Bera need to walk in order to put all bottles into recycling bin. Your answer will be considered correct if its absolute or relative error does not exceed 10 - 6.

Namely: let's assume that your answer is a, and the answer of the jury is b. The checker program will consider your answer correct if .

Examples
input
3 1 1 2 0 0
3
1 1
2 1
2 3
output
11.084259940083
input
5 0 4 2 2 0
5
5 2
3 0
5 5
3 5
3 3
output
33.121375178000
Note

Consider the first sample.

Adil will use the following path: .

Bera will use the following path: .

Adil's path will be  units long, while Bera's path will be  units long.

题目链接:http://codeforces.com/contest/672/problem/C


题意:一个广场有n个瓶子,有a,b两个人和一个垃圾桶。捡了瓶子后马上丢到垃圾桶,求两个人的最短路程。

思路:第一次捡瓶子要走的距离就是人到瓶子的距离+瓶子到垃圾桶的距离,第二次捡瓶子要走的距离就是另外一个人到瓶子的距离+瓶子到垃圾桶的距离(或者另外一个人不捡瓶子)。捡其他瓶子要走的距离是垃圾桶到瓶子的距离*2。做差值进行排序。sign1,sign2表示一个人差值最大的两个值。sign3,sign4表示另外一个人差值最大的两个值。总共有5种情况表示人到瓶子的距离+瓶子到垃圾桶的距离(1)sign1;(2)sign3;(3)sign1,sign3;(4)sign1,sign4;(5)sign2,sign3;其中第3种情况要两个瓶子不是同一个。


代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
const int MAXN = 1e5+, mod = 1e9 + , inf = 0x3f3f3f3f;
typedef long long ll;
const ll INF = (1ll<<);
struct gg
{
double d;
int i;
} sub1[],sub2[];
int cmp(gg a,gg b)
{
return a.d>b.d;
}
int main()
{
int i;
double ax,ay,bx,by,tx,ty;
int n;
double x,y;
double ans=;
scanf("%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&tx,&ty);
scanf("%d",&n);
for(i=; i<n; i++)
{
scanf("%lf%lf",&x,&y);
double sign1=sqrt((x-ax)*(x-ax)+(y-ay)*(y-ay))+sqrt((x-tx)*(x-tx)+(y-ty)*(y-ty));
double sign2=sqrt((x-bx)*(x-bx)+(y-by)*(y-by))+sqrt((x-tx)*(x-tx)+(y-ty)*(y-ty));
double d=2.0*sqrt((x-tx)*(x-tx)+(y-ty)*(y-ty));
sub1[i].d=d-sign1;
sub2[i].d=d-sign2;
sub1[i].i=sub2[i].i=i;
ans+=d;
}
sort(sub1,sub1+n,cmp);
sort(sub2,sub2+n,cmp);
double sign1=sub1[].d,sign2=sub1[].d,sign3=sub2[].d,sign4=sub2[].d;
int sign1_i=sub1[].i,sign2_i=sub1[].i,sign3_i=sub2[].i,sign4_i=sub2[].i;
double sign,Min=1e15;
sign=ans-sign1;
if(sign<Min) Min=sign;
sign=ans-sign3;
if(sign<Min) Min=sign;
if(sign1_i!=sign3_i)
{
sign=ans-sign1-sign3;
if(sign<Min) Min=sign;
}
sign=ans-sign1-sign4;
if(sign<Min) Min=sign;
sign=ans-sign2-sign3;
if(sign<Min) Min=sign;
printf("%.12f\n",Min);
return ;
}

Codeforces Recycling Bottles 模拟的更多相关文章

  1. Codeforces Round #352 (Div. 1) A. Recycling Bottles 暴力

    A. Recycling Bottles 题目连接: http://www.codeforces.com/contest/671/problem/A Description It was recycl ...

  2. Codeforces Round #352 (Div. 2) C. Recycling Bottles 贪心

    C. Recycling Bottles   It was recycling day in Kekoland. To celebrate it Adil and Bera went to Centr ...

  3. codeforces 352 div 2 C.Recycling Bottles 贪心

    C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  4. Codeforces 671 A——Recycling Bottles——————【思维题】

     Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. Codeforces Round #352 (Div. 2) C. Recycling Bottles

      C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  6. codeforces 672C C. Recycling Bottles(计算几何)

    题目链接: C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  7. CF 672C Recycling Bottles[最优次优 贪心]

    C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  8. 【模拟】Codeforces 671A Recycling Bottles

    题目链接: http://codeforces.com/problemset/problem/671/A 题目大意: A和B在一张二维平面上,平面上有N个垃圾,垃圾桶只有一个在T,问把所有垃圾全扔进垃 ...

  9. 【18.69%】【codeforces 672C】Recycling Bottles

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

随机推荐

  1. 【求助】win 2008 R2 远程桌面多用户,破解最大连接数2的限制

    [求助]win 2008 R2 远程桌面多用户,破解最大连接数2的限制. 1. 本地组策略设置的是“允许的RD最大连接数 5”. 2. 远程桌面仍然只能有两个连接在线. 3. 后来发现是下面这个设置限 ...

  2. 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 Week3 20165233

    Exp1 PC平台逆向破解 实验内容 一.基础知识点 NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP指令即"空指令",执行到NOP指令时,CPU什么也不做,机 ...

  3. python-log-env

    logging.basicConfig(format="[%(asctime)s] %(filename)s[line:%(lineno)d] %(levelname)s: %(messag ...

  4. python编程之禅

    在python界面输入 import this >>> import this The Zen of Python, by Tim Peters Beautiful is bette ...

  5. 5.log4j报错

    java.lang.UnsupportedClassVersionError: org/apache/log4j/Logger : Unsupported major.minor version 51 ...

  6. MDAC 重新安装

    MDAC 重新安装 c:\windows\inf 下找出mdac.inf 然后点右键->安装

  7. as3 优化

    1 代码写法 1 定义局部变量 定义局部变量的时候,一定要用关键字var来定义,因为在Flash播放器中,局部变量的运行速度更快,而且在他们的作用域外是不耗占系统资源的.当一个函数调用结束的时候,相应 ...

  8. UI5-文档-4.9-Component Configuration

    在我们介绍了模型-视图-控制器(MVC)概念的所有三个部分之后,现在我们将讨论SAPUI5的另一个重要的结构方面. 在这一步中,我们将把所有UI资产封装在一个独立于索引的组件中.html文件.组件是S ...

  9. spring cloud 服务提供者

    1. pom 依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  10. HIBERNATE知识复习记录2-继承关系

    发现了一篇和我类似的学习尚硅谷视频写的文章,内容如下,比我说的详细全面,可以看一下: [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , jo ...