codechef Taxi Driver

题意:

给N个点求任意两个点的“距离”总和:

A,B的“距离”定义为:min(|ax-bx|,|ay-by|) (n<200000)

好题!

解析:

看着没思路

先是公式化简:让 ax=sx+sy;

ay=sx-sy;

bx=tx+ty;

by=tx-ty;

于是:min(|ax-bx|,|ay-by|)=min(ax-bx,bx-ax,ay-by,by-ay)=min(sx-tx+sy-ty,tx-sx+ty-sy,sx-tx+sy-ty,tx-sx+ty-sy);

=|sx-tx|+|sy-ty|

这里就明显了吧:

sx=(ax+ay)/2 sy=(ax-ay)/2

于是分别按sx,sy排序;

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 #include <cstring>
 7 #include <vector>
 8
 9 #define ll long long
10 #define N 222222
11
12 ll a[N],b[N];
13 using namespace std;
14
15 int main()
16 {
17     int T;
18     scanf("%d",&T);
19     while (T--)
20     {
21         int n,c,d;
22         scanf("%d%d%d",&n,&c,&d);
23         for (int i=1;i<=n;i++)
24         {
25             int x,y;
26             scanf("%d%d",&x,&y);
27             a[i]=(ll) c*x+d*y;
28             b[i]=(ll) c*x-d*y;
29         }
30
31         sort(a+1,a+n+1);
32         sort(b+1,b+n+1);
33
34         ll ans=0;
35         ll ans1=0;
36         for (int i=1;i<=n;i++)
37         {
38             ans1+=a[i];
39             ans+=a[i]*i-ans1;
40         }
41         ans1=0;
42         for (int i=1;i<=n;i++)
43         {
44             ans1+=b[i];
45             ans+=b[i]*i-ans1;
46         }
47         printf("%lld\n",ans>>1);
48     }
49     return 0;
50 }

时间: 2024-11-07 18:12:44

codechef Taxi Driver的相关文章

URAL 1607. Taxi

1607. Taxi Time limit: 0.5 second Memory limit: 64 MB Petr likes going by taxi. For him, it is not only the pleasure of a fast and comfortable ride, but also the opportunity to bargain with the driver over the fare. The bargaining between Petr and ta

bzoj:1687;poj 2434:[Usaco2005 Open]Navigating the City 城市交通

Description A dip in the milk market has forced the cows to move to the city. The only employment available is in the venerable field of taxi-driving. Help the cows learn their way around the city. Given a city map with E (1 <= E <= 40) east/west st

你一生不可不看的奥斯卡获奖电影(1届~81届全)

<贫民窟的百万富翁>(Slumdog Millionaire) 提名: <本杰明·巴顿奇事>(The Curious Case of Benjamin Button),派拉蒙 <福斯特对话尼克松>(Frost/Nixon),环球 <米尔克>(Milk),焦点 <朗读者>(The Reader),韦恩斯坦 2008(80届) 获奖 <老无所依>No Country for Old Men 提名 <赎罪>Atonement &

As3.0 Interface 与类的使用

来源:http://blog.sina.com.cn/s/blog_4d65c19e0100bfkb.html 抽象类:又叫抽象基类:可以包含一般类所包含的所有特性,例如,字段,属性,方法,抽象类不能被实例化他主要用在类的定义和部分实现这方面,所以他需要在扩充类中完整的扩充并实现功能.另外抽象类还包含一个很特殊的方法,叫抽象方法(这些方法基本上是没有执行代码的函数,由继承于该类的类重写(override)并提供具体实现).在Java和C#中,有abstract关键字来定义抽象类,而在As3中,并

mongoDB2.6,java使用详解

本文使用的环境是:win7_64+Eclipse+maven 一.准备工作 下载java驱动包 驱动包下载地址:http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver mongoDB下载:http://www.mongodb.org/ 在线api:http://docs.mongodb.org/manual/applications/drivers/ 二.安装Mongo 1.windows下安装方式: 安装Mongo数据库:

吐血推荐250部必看电影下载 IMDB TOP 250 download

中文名: IMDB Top 250合辑 TLF-MiniSD收藏版英文名: IMDB Top 250 TLF-MiniSD Collection版本: (更新至TOP119)[MiniSD]发行日期: 2010年地区: 美国语言: 英语 简介: IMDB Top 250合辑 TLF-MiniSD收藏版制作&发行:TLF HALFCD TeamTLF耗时2年精心打造,虎年开篇扛鼎之作 IMDB TOP 250邀您共赏一个世纪的经典 IMDB TOP250是IMDB网站里很受欢迎的特色栏目,里面列出

推荐电影 历届奥斯卡获奖影片 1971-2008

2008-10-26 11:33:16 来自: F小星?(低姿态张扬的自由主张) p.s偶觉得有的提名的比获奖好看... 2008(80届) 获奖 <老无所依> (No Country for Old Men) 提名 <赎罪> (Atonement) <朱诺> (Juno) <英雄不问出处> (Michael Clayton) <老无所依> (No Country for Old Men) <血色黑金> (There Will Be

PyOdps 0.4版本发布,从一个故事说起

有这么个故事(如有雷同,纯属巧合).有一天,某运营同学给某开发同学一个excel文件,里面是个客户清单. "帮我查下这些用户的消耗呢". 开发同学扫了一眼,几百个用户.这个事肯定是可以办的,但是想到麻烦程度,开发同学心里肯定是有不少羊驼经过的啦. "有点麻烦啊",开发同学轻轻抱怨. "我懂的,把这个表和ODPS里的表join下就好了嘛."运营同学努努嘴. "--".于是,开发同学把excel数据导出成文本格式,然后dship上

历年奥斯卡获奖影片(1927—2014)

1939年出品的"Gone with the Wind 乱世佳人 ",好精彩好经典啊!历史的评价一致公认,这部影片是"好莱坞第一巨片".反映"宏大战争中永恒的爱情",是一幅反映社会政治.经济.道德诸多方面的巨大而深刻变化的历史画卷.这部依据玛格丽特·米切尔的畅销小说<飘>改编而成的电影,使费雯丽轰动了全美国和整个大洋彼岸."郝思嘉风暴"经久不息.自1939后的几十年,看过这部影片的观众已数以亿计.影片当之无愧地获得