Codeforces Recycling Bottles 模拟
2 seconds
256 megabytes
standard input
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:
- Choose to stop or to continue to collect bottles.
- If the choice was to continue then choose some bottle and walk towards it.
- Pick this bottle and walk to the recycling bin.
- 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.
First line of the input contains six integers ax, ay, bx, by, tx 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.
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 .
3 1 1 2 0 0
3
1 1
2 1
2 3
11.084259940083
5 0 4 2 2 0
5
5 2
3 0
5 5
3 5
3 3
33.121375178000
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 模拟的更多相关文章
- Codeforces Round #352 (Div. 1) A. Recycling Bottles 暴力
A. Recycling Bottles 题目连接: http://www.codeforces.com/contest/671/problem/A Description It was recycl ...
- 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 ...
- codeforces 352 div 2 C.Recycling Bottles 贪心
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces 671 A——Recycling Bottles——————【思维题】
Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 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 ...
- codeforces 672C C. Recycling Bottles(计算几何)
题目链接: C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- CF 672C Recycling Bottles[最优次优 贪心]
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 【模拟】Codeforces 671A Recycling Bottles
题目链接: http://codeforces.com/problemset/problem/671/A 题目大意: A和B在一张二维平面上,平面上有N个垃圾,垃圾桶只有一个在T,问把所有垃圾全扔进垃 ...
- 【18.69%】【codeforces 672C】Recycling Bottles
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
随机推荐
- python文件操作与字符编码
知识内容: 1.文件对象与文件处理流程 2.基本操作 3.上下文管理 4.文件的修改与文件内光标的移动 5.字符编码 一.文件对象与文件处理流程 1.文件对象 (1)文件分类 按文件中数据的组织形式可 ...
- jieba库及wordcloud库的使用
知识内容: 1.jieba库的使用 2.wordcloud库的使用 参考资料: https://github.com/fxsjy/jieba https://blog.csdn.net/fontthr ...
- django-paginator
py code... from django.core.paginator import Paginator class NewsListView(View): def get(self, reque ...
- C# 通用方法
一. /// <summary> /// 删除字符串中的中文 /// </summary> public static string Delete(string str) { ...
- MVC控制器详解
原文地址:http://www.cnblogs.com/SeeYouBug/p/6441934.html#3628606 目录 一.理解控制器 1.1.什么是控制器 1.2.控制器的作用 1.3.创建 ...
- NUMA体系结构介绍
为什么会有NUMA? 在NUMA架构出现前,CPU欢快的朝着频率越来越高的方向发展.受到物理极限的挑战,又转为核数越来越多的方向发展.如果每个core的工作性质都是share-nothing(类似于m ...
- Status Code:405 Method Not Allowed
场景: 前端调用方法的时候,调不通,并且报错信息为405 因为我们公司前后端分离开发,于是前端就来找我说我写的接口有问题?于是我就在这里的postman中测试发现没问题啊. 然后我好好看了一下报错信息 ...
- REST Client
1. 为什么要使用REST Client 在实际企业开发过程中经常会有这样的需求: 1.我当前开发的这个系统是需要调用其他系统的接口,也就是我们需要频繁的测试接口,尝试不同的入参参数去查看返回结果, ...
- 第一个gulp程序
说起来惭愧,一直用公司内部的工具,没有用这些红得发紫的东西.今天东抄西拼终于搞出第一个gulp应用.gulp是做什么的,好处在哪儿我不废话了.直入主题吧. 先在D盘下建立一个xxxx目录,然后打开控制 ...
- Java学习 第二节
1.非递归求第四十个斐波那契数 package test; public class fibonacci2 { public static void main(String arg[]) { ; ; ...