Codeforces Round #352 (Div. 1) A. Recycling Bottles 暴力
A. Recycling Bottles
题目连接:
http://www.codeforces.com/contest/671/problem/A
Description
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.
Input
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.
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 .
Sample Input
3 1 1 2 0 0
3
1 1
2 1
2 3
Sample Output
11.084259940083
题意
有A和B两个人,地面上有n个空瓶子,现在这A和B要去把这些空瓶子扔到辣鸡桶里面去
每个人同时只能拿一个辣鸡,问你这两人最少走多长,就可以把这些辣鸡全部处理干净?
给你一开始A,B,和辣鸡桶位置
题解:
首先把特殊情况特判掉,就是只由A去捡瓶子,和只有B去捡瓶子的情况
然后只由两个人和路线是 A-瓶子-垃圾桶,B-瓶子-辣鸡桶,其他的都是垃圾桶-瓶子-辣鸡桶
所以我们排序之后,暴力2*2去枚举离A最近的,和离B最近的那个就好了。
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+6;
double ax,ay,bx,by,tx,ty;
struct node
{
double x,y;
double dis1,dis2,dis3;
int id;
}p[maxn],p1[maxn],p2[maxn];
int n;
double dis(double x,double y,double x1,double y1)
{
return sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
}
bool cmp1(node a,node b)
{
return a.dis1-a.dis3<b.dis1-b.dis3;
}
bool cmp2(node a,node b)
{
return a.dis2-a.dis3<b.dis2-b.dis3;
}
int main()
{
scanf("%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&tx,&ty);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y),p[i].id=i;
double ans = 0;
for(int i=1;i<=n;i++)
{
p[i].dis1=dis(p[i].x,p[i].y,ax,ay);
p[i].dis2=dis(p[i].x,p[i].y,bx,by);
p[i].dis3=dis(p[i].x,p[i].y,tx,ty);
ans+=p[i].dis3;
}
ans*=2;
double Ans=1e18;
for(int i=1;i<=n;i++)p1[i]=p[i],p2[i]=p[i];
sort(p1+1,p1+1+n,cmp1);
sort(p2+1,p2+1+n,cmp2);
for(int i=1;i<=100&&i<=n;i++)
{
for(int j=1;j<=100&&j<=n;j++)
{
if(p1[i].id==p2[j].id)continue;
double ans2=ans,ans3=ans,ans4=ans,ans5=ans;
ans2 = ans2 + p1[i].dis1 - p1[i].dis3 + p2[j].dis2 - p2[j].dis3;
ans3 = ans3 + p1[j].dis1 - p1[j].dis3 + p2[i].dis2 - p2[i].dis3;
ans4 = ans4 + p1[i].dis1 - p1[i].dis3;
ans5 = ans5 + p2[j].dis2 - p2[j].dis3;
Ans=min(Ans,ans2);
Ans=min(Ans,ans3);
Ans=min(Ans,ans4);
Ans=min(Ans,ans5);
}
double ans4=ans,ans5=ans;
ans4 = ans4 + p1[i].dis1 - p1[i].dis3;
ans5 = ans5 + p2[i].dis2 - p2[i].dis3;
Ans=min(Ans,ans4);
Ans=min(Ans,ans5);
}
printf("%.12f\n",Ans);
}
Codeforces Round #352 (Div. 1) A. Recycling Bottles 暴力的更多相关文章
- Codeforces Round #352 (Div. 2) C. Recycling Bottles 暴力+贪心
题目链接: http://codeforces.com/contest/672/problem/C 题意: 公园里有两个人一个垃圾桶和n个瓶子,现在这两个人需要把所有的瓶子扔进垃圾桶,给出人,垃圾桶, ...
- 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. 2) C. Recycling Bottles
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 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 Round #352 (Div. 2) ABCD
Problems # Name A Summer Camp standard input/output 1 s, 256 MB x3197 B Different is Good ...
- 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 Round #352 (Div. 2) C
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #352 (Div. 2) D. Robin Hood
题目链接: http://codeforces.com/contest/672/problem/D 题意: 给你一个数组,每次操作,最大数减一,最小数加一,如果最大数减一之后比最小数加一之后要小,则取 ...
随机推荐
- .net 下的集合
集合的操作在编码的时候很常见.但是由于经常使用几种集合.而忽略了一些不常用的集合.在这里我整理下. 首先先了解下接口: 1.IEnumerable,返回一个循环访问集合的枚举器. 2.IEnumera ...
- 正则表达式基础->
描述:(grep) 正则表达式是一种字符模式,用于在查找过程中匹配指定的字符.在大多数程序里,正则表达式都被置于两个正斜杠之间,它匹配被查找的行中任何位置出现的相同模式 基础正则表达式 正则表达式 描 ...
- spring 学习之二 AOP编程
AOP概念 AOP, aspect oriented programing,翻译过来就是面向切面编程的意思,那什么叫面向切面编程呢?相对于之前传统的纵向继承方式来对原有功能进行功能扩展, 面向切面编程 ...
- Form 源码
1. is_valid如果返回值如果为真 证明验证成功 意味着self.is_bound为True 和 self.errors为False def is_valid(self): return sel ...
- 大家来探讨下,IRepository 应该怎么定义?
ORM已EF为例子:我见的最多的是泛型的IRepository, public partial interface IRepository<T> where T : BaseEntity{ ...
- Struts 2 Overview
Struts2 is popular and mature web application framework based on the MVC design pattern. Struts2 is ...
- 【LOJ】#2054. 「TJOI / HEOI2016」树
题解 一写过一交A的水题 只要求一个dfs序,新加一个标记在子树所在的区间上覆盖上该点,维护深度最大的答案 代码 #include <bits/stdc++.h> #define ente ...
- codeforces 603 A
题目大意:给你一个0,1串, 你可以反转一段连续的区间,问你最长的合法子串是多长, 合法字串相邻的两个不能相同. 思路:dp[ i ][ k ][ j ] 表示到第 i 个字符, 处于k这种状态, k ...
- Django实战(12):增加目录页,设定统一布局
针对上一节的新需求,界面设计师还为我们设计了一个新的界面,不仅仅是目录页,还包含了站点的整体风格,如下图: 感谢界面设计师为我们提供的“又黑又硬”的工具条,这个看起来真的很酷.下面,让我们来享用她的工 ...
- 20169211《Linux内核原理与分析》第六周作业
1.教材内容总结 2.实验报告 3.学习总结 一.教材内容总结 1.系统调用与应用编程接口API的区别 操作系统为用户态进程与硬件设备进行交互提供了一组接口,就是系统调用.它主要有一下三个方面的作用: ...