题意:

给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排序;

 #include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <vector> #define ll long long
#define N 222222 ll a[N],b[N];
using namespace std; int main()
{
int T;
scanf("%d",&T);
while (T--)
{
int n,c,d;
scanf("%d%d%d",&n,&c,&d);
for (int i=;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
a[i]=(ll) c*x+d*y;
b[i]=(ll) c*x-d*y;
} sort(a+,a+n+);
sort(b+,b+n+); ll ans=;
ll ans1=;
for (int i=;i<=n;i++)
{
ans1+=a[i];
ans+=a[i]*i-ans1;
}
ans1=;
for (int i=;i<=n;i++)
{
ans1+=b[i];
ans+=b[i]*i-ans1;
}
printf("%lld\n",ans>>);
}
return ;
}

最新文章

  1. 让MacBook识别noppoo mini 84
  2. TJ2016 CTF Write up
  3. UVALive 3401 彩色立方体
  4. javascript按中文首字母排序
  5. jQuery 图片等比缩放
  6. 获取滚动条ScrollBar宽度
  7. POJ 2442 Sequence
  8. Installing IPython using pip on CentOS
  9. 函数mem_pool_create
  10. delphi Edit - TActionList
  11. 仿建行JS键盘
  12. Spring注入值得2种方式:属性注入和构造注入
  13. unittest模块的常用方法:
  14. SpringBoot整合Jsp和Thymeleaf (附工程)
  15. Android 常用知识点
  16. GUI学习之八——复选框QCheckBox的学习总结
  17. A - Shashlik Cooking CodeForces - 1040B
  18. linux如何查看端口被哪个进程占用
  19. 牛客多校第二场 G transform
  20. 某些浏览器没有canvas.toBlob 方法的解决方案

热门文章

  1. laravel关联用户
  2. PMP项目管理学习笔记(8)——整个管理之监控项目工作、综合变更控制、结束项目或阶段
  3. sql server 2000备份还原数据库
  4. 在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图
  5. Idea maven项目不能新建package和class的解决方法
  6. iview modal 点击打开窗口,打开前先销毁里面的内容再打开
  7. python3查询Excel中A表在B表没有的数据,并保存到新的Excel,这里用的是“xlrd”和“xlwt”
  8. Windows环境下安装 mysql-8.0.11-winx64 遇到的问题解决办法
  9. 第五章:C++程序的结构
  10. 第二天,学习if,变量,注释