这道提看完yy是最小生成数,一看点100000个,顿时吓尿了,最短路对校生成树都要n^2什么的啊,所以所以,没做出来

了解他的行走模式就知道,其实我们是可以x,y分开算的,这是什么概念,排序之后就是在x轴上可以分别算出每个点到其他距离和sumx,y轴上可以分别算出每个点到其他距离和sumy,对于询问的(x,y),可以二分查找到他在x轴上对应的sumx,y轴上对应sumy,在sumx+sumy就ok啦!!

至于我们怎么找算sumx,sumy,如果挨个算那就又是n^2啦,不好,想一个办法,就是递推先算出第一个点到说有点的距离sumx[1],然后就递推了,因为我们想右递推的过程中,里右面的点越来越进,左面的点越来越远,sumx[i]向sum[i+1]移动,远了左面点的个数*a[i+1]-a[i](从小到大排序的),近了右面点的个数*a[i+1]-a[i],所以递推公式为sumx[i]=sumx[i-1]-(long long)(m-i)*(a[i]-a[i-1])+(long long)i*(a[i]-a[i-1]);注意中间会溢出的

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100005
long long sumx[N],sumy[N];
int a[N],b[N],aa[N],bb[N],m;
long long find1(int x){int l=0,r=m-1;while(r>=l){int mid=(l+r)>>1;if(x>a[mid])l=mid+1;if(x<a[mid])r=mid-1;if(x==a[mid])return sumx[mid];}return sumx[l];
}
long long find2(int x){int l=0,r=m-1;while(r>=l){int mid=(l+r)>>1;if(x>b[mid])l=mid+1;if(x<b[mid])r=mid-1;if(x==b[mid])return sumy[mid];}return sumy[l];
}
int main(){freopen("in.txt","r",stdin);int n,x,y;scanf("%d",&n);while(n--){scanf("%d",&m);for(int i=0;i<m;i++){scanf("%d%d",&a[i],&b[i]);aa[i]=a[i];bb[i]=b[i];sumx[i]=sumy[i]=0;}sort(a,a+m);sort(b,b+m);for(int i=1;i<m;i++){sumx[0]+=a[i]-a[0];sumy[0]+=b[i]-b[0];}for(int i=1;i<m;i++){sumx[i]=sumx[i-1]-(long long)(m-i)*(a[i]-a[i-1])+(long long)i*(a[i]-a[i-1]);sumy[i]=sumy[i-1]-(long long)(m-i)*(b[i]-b[i-1])+(long long)i*(b[i]-b[i-1]);}
//        for(int i=0;i<m;i++)
//            cout<<sumx[i]<<" ";//       cout<<endl;
//        for(int i=0;i<m;i++)
//            cout<<sumy[i]<<" ";
//        cout<<endl;long long sum,min1=300000000000000LL;//       cout<<min1<<endl;for(int i=0;i<m;i++){sum=find1(aa[i])+find2(bb[i]);if(sum<min1)min1=sum;}cout<<min1<<endl;}return 0;
}

hdu 4311 Meeting point-1 递推 多校联合赛(二) 第二题相关推荐

  1. hdu 1133 Buy the Ticket(递推+精度精算)

    做这道题之前可以先做:hdu 1267(递推方法和这道题是一样的知识没有精度计算)这是我的博客链接接:http://www.cnblogs.com/jiangjing/archive/2013/01/ ...

  2. HDU 5459 Jesus Is Here (递推,组合数学)

    有点麻烦的递推,递推的原则:向小的问题方向分解,注意边界. 字符串的递推式为 定义f为Si中的总方案数 首先可以得到 fi=fi-1+fi-2+组合(si-2,si-1) 然后考虑Si-2和Si-1之 ...

  3. hdu 2046 骨牌铺方格 递推求解

    骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)

    题目链接:点击查看 题目大意:规定宽度为4,给定长度为n,求用1*2和2*1的瓷砖,将其完全铺满能有多少种方法. 分析:自从学会了矩阵快速幂之后,看到1e18的数据量都会下意识的往递推上面想,但是以前 ...

  5. hdu 4311 Meeting point-1

    http://acm.hdu.edu.cn/showproblem.php?pid=4311 思维呀 亲   你想到就可以做出来  想不到就做不出了 什么都不说了  上代码 不知道为什么 在hdu 上 ...

  6. HDU 4311 - Meeting point-1(前缀和优化曼哈顿距离)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4311 题意:给定n个点,找出一点使得该点到其余各点的曼哈顿距离总和最小,输出最小值. 思路:分别对横纵 ...

  7. HDU 2046 骨牌铺方格 递推

    骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  8. HDU 5734 Acperience (公式推导) 2016杭电多校联合第二场

    题目:传送门. #include <iostream> #include <algorithm> #include <cstdio> #include <cs ...

  9. HDU 4893 Wow! Such Sequence!(2014年多校联合 第三场 G)(线段树)

    磨了一天的线段树,不能说完全搞清楚,只能说有一个大概的了解,靠着模板才把这道题A了,只能说太弱~~! 题意: 初始时有一字符串,全为0. 三种操作: 1 k d - add  把d加到第k个数上去 2 ...

  10. HDU多校联合赛(1007 Magical Forest)模拟题

    题目: Problem Description There is a forest can be seen as N * M grid. In this forest, there is some m ...

最新文章

  1. leetcode算法题--Minimum Number of Arrows to Burst Balloons
  2. Java程序员从笨鸟到菜鸟之(十一)多线程讲解
  3. 【Android学习】自定义Android样式checkbox
  4. ref 与 out 参数的区别
  5. Ubuntu下添加开机启动脚本
  6. 一款黑科技让普通屏幕秒变触摸屏,厉害了我的哥
  7. 基于CNN实现CIFAR100识别-tensorflow2.0实现
  8. cf414B(dp)
  9. 接口测试---mock变量自定义变量的使用
  10. asp.net 用正则表达式过滤内容中的电话,qq,email
  11. ABAP中分页控件的定义
  12. 百度谭中意:我和开源20年
  13. 浅谈设备驱动的作用与本质,有无操作系统Linux设备驱动的区别
  14. jenkins 国内插件源无效问题的解决方案
  15. AT指令对wavecom串口GSM工业手机发送短信(英文和PDU短信)
  16. Python 使用 PyOTP 实现二步验证
  17. MT7921:WIFI、AP、BT基础知识
  18. 用手机远程控制扫描仪
  19. Arthas Spring Boot Starter工程启动报错
  20. mac book 华为C8815不能debug

热门文章

  1. 9.包装类的构造方法
  2. Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
  3. 初学swift笔记-数组、字典、元组(三)
  4. 两个多变量分布间的KL散度+变分子编码
  5. 西瓜书boosting learning 集成的错误率推导
  6. Mail.Ru Cup 2018 Round 3
  7. LeetCode ——24. 两两交换链表中的节点
  8. Django Ajax学习一
  9. Python IO模型
  10. CSS3实现轮播图效果