hdu4312 Meeting point-2
来源:互联网 发布:免费刷阅读量软件 编辑:程序博客网 时间:2024/05/01 20:37
将切比雪夫距离转换成曼哈顿距离
利用这个转换可以去掉讨厌的最值函数,挺不错的。
max(|x1-x2|,|y1-y2|)=(|x1-x2+y1-y2|+|x1-x2-y1+y2|)/2 。
这个转换的几何意义是,把每个点逆时针旋转45度,然后坐标乘以根号2后得到的点的曼哈顿距离等于原来点的切比雪夫距离。(可以用极坐标理解)
也可以想做是顺时针将坐标轴旋转了45度。
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int maxn=100005;ll x[maxn],y[maxn];ll xx[maxn],yy[maxn];ll sx[maxn],sy[maxn];int main(){ int t,n,i,j,p1,p2; ll sumx,sumy,tmp,ans; scanf("%d",&t); while(t--) { scanf("%d",&n); sumx=0;sumy=0; for(i=0;i<n;++i) { scanf("%I64d %I64d",&x[i],&y[i]); sumx+=x[i]+y[i];sumy+=x[i]-y[i]; tmp=x[i];x[i]=x[i]+y[i];y[i]=tmp-y[i]; }// cout<<"sumx=="<<sumx<<'\t'<<"sumy=="<<sumy<<endl; memcpy(xx,x,sizeof(x)); memcpy(yy,y,sizeof(y)); sort(xx,xx+n); sort(yy,yy+n);// for(i=0;i<n;++i)// {// printf("%I64d%c",xx[i],(i==(n-1))?'\n':' ');// }// for(i=0;i<n;++i)// printf("%I64d%c",yy[i],(i==(n-1))?'\n':' '); sx[0]=0;sy[0]=0; for(i=1;i<=n;++i) { sx[i]=xx[i-1]+sx[i-1]; sy[i]=yy[i-1]+sy[i-1]; }// printf("sx[n]==%I64d\tsy[n]==%I64d\n",sx[n-1],sy[n-1]); ans=-1; for(i=0;i<n;++i) { p1=lower_bound(xx,xx+n,x[i])-xx; p2=lower_bound(yy,yy+n,y[i])-yy; tmp=0;// printf("%d\t%d\n",p1,p2); tmp=(2*p1-n)*x[i]+sumx-2*sx[p1]+(2*p2-n)*y[i]+sumy-2*sy[p2]; ans=(ans==-1)?tmp:min(ans,tmp); } printf("%I64d\n",ans/2); } return 0;}
- hdu4312 Meeting point-2
- HDU4312 Meeting point-2 (切比雪夫距离&&曼哈顿距离)
- Meeting point-2
- hdu 4312 Meeting point-2
- hdu - 4312 - Meeting point-2 - 数学 + 想法
- hdu 4312 Meeting point-2(4级)
- MUTC 2 B - Meeting point-1 二分
- 水题:meeting point-1
- best meeting point
- Meeting point-1
- [LeetCode] Best Meeting Point
- [LeetCode296]Best Meeting Point
- 296. Best Meeting Point
- leetcode: Best Meeting Point
- Best Meeting Point
- 296. Best Meeting Point
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2 曼哈顿距离 与 切比雪夫距离
- HDU 4311 Meeting point-1
- Install VMwares Tools
- IE9下PHP IFrame session 丢失
- 题目1020:最小长方形
- 何为模式?
- 汽水瓶的问题,别被问题吓倒了,特简单!!
- hdu4312 Meeting point-2
- eclipse oracle Database Manager plugin oracle数据库连接插件
- 线段树专题
- PXE自动安装
- 我的新的里程--android学习
- 笔记:PGA(二)
- ASP.NET前台JS与后台CS函数如何互相调用
- Android事件传递机制【Touch事件】
- Kobject相关