codeforces 352 div 2 C.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.
题意:给你两个人,一个垃圾桶;利用人把垃圾全部进桶,使得距离最短;
思路:显然答案是sigma一个垃圾到垃圾桶距离的两倍;
求出一个人动和两个人动的差值最大的距离;
比较减去最大值;
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define inf 999999999
#define esp 0.00000000001
//#pragma comment(linker, "/STACK:102400000,102400000")
int scan()
{
int res = , ch ;
while( !( ( ch = getchar() ) >= '' && ch <= '' ) )
{
if( ch == EOF ) return << ;
}
res = ch - '' ;
while( ( ch = getchar() ) >= '' && ch <= '' )
res = res * + ( ch - '' ) ;
return res ;
}
long double dis(long double a,long double b,long double c,long double d)
{
return sqrt((d-b)*(d-b)+(c-a)*(c-a));
}
struct is
{
long double cha;
int pos;
}a1[],b1[];
int flag[];
bool cmp(is x,is y)
{
return x.cha>y.cha;
}
int main()
{
long double a,b,c,d,e,f;
cin>>a>>b>>c>>d>>e>>f;
long double sum=;
int x;
scanf("%d",&x);
for(int i=;i<x;i++)
{
long double u,v;
cin>>u>>v;
sum+=dis(e,f,u,v)*2.0;
a1[i].cha=dis(e,f,u,v)-dis(u,v,a,b);
b1[i].cha=dis(e,f,u,v)-dis(u,v,c,d);
a1[i].pos=i;
b1[i].pos=i;
}
if(x==)
{
//printf("%f\n",sum-max(a1[0].cha,b1[0].cha));
cout << setprecision() << setiosflags(ios::scientific)<<sum-max(a1[].cha,b1[].cha)<<endl;
return ;
}
sort(a1,a1+x,cmp);
sort(b1,b1+x,cmp);
double aa,bb;
if(a1[].cha<&&b1[].cha<)
{
cout << setprecision() << setiosflags(ios::scientific)<<sum-max(a1[].cha,b1[].cha)<<endl;
return ;
}
long double ans1;
long double ans2;
long double ans3;
if(a1[].pos!=b1[].pos)
ans3=a1[].cha+b1[].cha;
else
{
if(a1[].cha+b1[].cha<a1[].cha+b1[].cha)
ans3=a1[].cha+b1[].cha;
else
ans3=a1[].cha+b1[].cha;
}
ans2=a1[].cha;
ans1=b1[].cha;
cout << setprecision() << setiosflags(ios::scientific)<<sum-max(ans1,max(ans2,ans3))<<endl;
return ;
}
codeforces 352 div 2 C.Recycling Bottles 贪心的更多相关文章
- 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 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 time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Codeforces Round #352 (Div. 2) C. Recycling Bottles 暴力+贪心
题目链接: http://codeforces.com/contest/672/problem/C 题意: 公园里有两个人一个垃圾桶和n个瓶子,现在这两个人需要把所有的瓶子扔进垃圾桶,给出人,垃圾桶, ...
- Codeforces 671A Recycling Bottles(贪心+思维)
题目链接:http://codeforces.com/problemset/problem/671/A 题目大意:给你两个人的位置和一个箱子的位置,然后给出n个瓶子的位置,要求让至少一个人去捡瓶子放到 ...
- Codeforces Round #352 (Div. 2)
模拟 A - Summer Camp #include <bits/stdc++.h> int a[1100]; int b[100]; int len; void init() { in ...
- Codeforces Round #352 (Div. 2) (A-D)
672A Summer Camp 题意: 1-n数字连成一个字符串, 给定n , 输出字符串的第n个字符.n 很小, 可以直接暴力. Code: #include <bits/stdc++.h& ...
- Codeforces Recycling Bottles 模拟
C. Recycling Bottles time limit per test: 2 seconds memory limit per test: 256 megabytes input: stan ...
- codeforces 672C C. Recycling Bottles(计算几何)
题目链接: C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input s ...
随机推荐
- CentOS忘记普通用户密码解决办法
普通用户忘记密码 1.使用root用户登录系统,找到/etc/shadow文件. 2.找到用户名开头的那一行,例如我的用户名为pds,,以冒号为分割符,红色部分是密码加密部分 pds:$1$Civop ...
- [Leetcode] 49. Group Anagrams_Medium
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- php array_rand()函数从数组中随机选择一个或多个元素
php使用array_rand()函数从数组中随机选择一个或多个元素的方法. 使用array_rand() 函数从数组中随机选出一个或多个元素,并返回. array_rand(array,numbe ...
- 怎么把<li>标签里的内容付给文本框
如果你不想使用jq,那就可以这样先写一个js函数,function val(a){alert(a);} 然后在li标签上添加点击事件,调用这个函数并将当前li里的文本当做参数一起发送给js函数< ...
- liferay6.1.2的API
http://docs.liferay.com/portal/6.1/javadocs/overview-summary.html
- .Net Core2.0基于DbContext,IActionFilter过滤器实现全局UOW,不使用TransactionScope
抛弃TransactionScope 之前实现过类似功能是使用的TransactionScope,总碰到这样那样的问题,新项目迁移到.net core2.0下,果断抛弃之前的写法,因为DbContex ...
- 对于session,request,cookie的理解
session和request的生命周期 首先是session,比如我们在实现一个购物车功能时,在某一页面(这里称为页面A)选择了一些购物的商品,添加到购物车.那么当我们选择完成后点击我的购物车时会跳 ...
- STA分析(二) multi_cycle and false
multicycle path:当FF之间的组合逻辑path propagate delay大于一个时钟cycle时,这条combinational path能被称为multicycle path. ...
- Java设计模式应用——观察者模式
告警结果产生后,可能需要发送短信,邮件,故障管理系统.这些转发操作不应当影响告警生成入库,并且类似事件可能根据不同场景,客户习惯不同,此时,使用观察者模式则可以很好的适应上述场景. 观察者模式应当包括 ...
- linux常用命令:vmstat 命令
vmstat 是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体 情况进行统计,不足之处是无法对某个进程进 ...