链接

luogu

思路

切比雪夫距离有max,不好优化。

但是我们能转化成曼哈顿距离,只需要

\((x,y)变成(\frac{x+y}{2},\frac{x-y}{2})\)

相反的曼哈顿距离转切比雪夫距离

\((x,y)=>(x+y,x-y)\)

详情见attack

剩下的就是sort直接做了

代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+7;
int n;
struct node {
int val,id;
bool operator < (const node &b) const {
return val<b.val;
}
}a[N],b[N];
ll ans[N],sum[N][2],mi;
int main() {
scanf("%d",&n);
for(int i=1,tmpa,tmpb;i<=n;++i) {
scanf("%d%d",&tmpa,&tmpb);
a[i].val=(tmpa+tmpb),a[i].id=i;
b[i].val=(tmpa-tmpb),b[i].id=i;
}
sort(a+1,a+1+n);
sort(b+1,b+1+n);
for(int i=1;i<=n;++i) sum[i][0]=sum[i-1][0]+a[i].val;
for(int i=n;i>=1;--i) sum[i][1]=sum[i+1][1]+a[i].val;
for(int i=1;i<=n;++i) {
ans[a[i].id]+=1LL*a[i].val*(i-1)-sum[i-1][0];
ans[a[i].id]+=sum[i+1][1]-1LL*(n-i)*a[i].val;
}
for(int i=1;i<=n;++i) sum[i][0]=sum[i-1][0]+b[i].val;
for(int i=n;i>=1;--i) sum[i][1]=sum[i+1][1]+b[i].val;
for(int i=1;i<=n;++i) {
ans[b[i].id]+=1LL*b[i].val*(i-1)-sum[i-1][0];
ans[b[i].id]+=sum[i+1][1]-1LL*(n-i)*b[i].val;
}
mi=0x3f3f3f3f3f3f3f3fLL;
for(int i=1;i<=n;++i) mi=min(mi,ans[i]);
cout<<mi/2<<"\n";
return 0;
}

luoguP3964 [TJOI2013]松鼠聚会的更多相关文章

  1. LuoguP3964 [TJOI2013]松鼠聚会【切比雪夫距离/前缀和】

    题目传送门 前置知识:切比雪夫距离和曼哈顿距离的相互转化--自为风月马前卒 有了这个知识,我们便可以在读入松鼠的家的坐标时,先把他转化一下,然后把最后的总式化简,我们会得到一个充满后缀和以及前缀和的式 ...

  2. BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和

    BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和 题意:有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点, ...

  3. 【bzoj3170】[Tjoi2013]松鼠聚会

    3170: [Tjoi2013]松鼠聚会 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1670  Solved: 885[Submit][Statu ...

  4. [TJOI2013]松鼠聚会 曼哈顿距离

    [TJOI2013]松鼠聚会 luogu P3964 首先容易得到两点间距离是\(max(|x_1-x_2|, |y_1-y_2|)\)(即切比雪夫距离) 然后有个套路:原\((x,y)\)求曼哈顿距 ...

  5. [TJOI2013]松鼠聚会(枚举)

    [TJOI2013]松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x, ...

  6. 洛谷P3964 [TJOI2013]松鼠聚会 [二分答案,前缀和,切比雪夫距离]

    题目传送门 松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示, ...

  7. [TJOI2013]松鼠聚会 BZOJ 3170

    题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点( ...

  8. BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1524  Solved: 803[Submit][Status][Discuss] Descripti ...

  9. 3170: [Tjoi2013]松鼠聚会

    Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1804  Solved: 968[Submit][Status][Discuss] Descript ...

随机推荐

  1. Codility MinMaxDivision

    最近发现了一个刷题网站:https://app.codility.com/programmers/lessons 这个网站做题目时候的界面让我惊艳到了 首先这是题目界面: 然后点击start, 出来的 ...

  2. Linux学习笔记之rsync配置

    0x00 rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录. ...

  3. 在ASP.NET Core中获取客户端和服务器端的IP地址(转载)

    随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...

  4. C# yield checked,unchecked lock语句(C#学习笔记04)

    特殊语句 yield语句 yield用于终止迭代 只能使用在返回类型必须为 IEnumerable.IEnumerable<T>.IEnumerator 或 IEnumerator< ...

  5. String类的方法应用

    String类的几个方法的应用示例: using System;using System.Collections.Generic;using System.Linq;using System.Text ...

  6. tiny-spring 分析

    tiny-spring 分析 前言 在阅读 Spring 的源代码(依赖注入部分和面向切面编程部分)时遇到不少困惑,庞大的类文件结构.纷繁复杂的方法调用.波诡云谲的多态实现,让自己深陷其中.一头雾水. ...

  7. (转)二步实现 远程连接 阿里云SqlServer 2012 数据库服务器

    前言:在使用 阿里云 上的一些产品时,遇到不少坑. 安装IIS 时,遇到 因买的配置过低,虚拟内存不足,而导致 IIS 总是安装失败: 现在 在上面安装了个 Sql Sever 2012,远程老是 不 ...

  8. rest-spring-boot-starter

    rest-spring-boot-starter 基于spring boot,统一业务异常处理,统一返回格式包装 依赖 <dependency> <groupId>tk.fis ...

  9. vue之使用echarts

    在main中 //import ElementUI from 'element-ui' //import 'element-ui/lib/theme-chalk/index.css' import e ...

  10. Vue – 基础学习(5):动态加载和注册组件

    // var myComponent =() => import(`./../../components/custom_panel/${t_url}.vue`);// //var myCompo ...