首页 > 代码库 > poj 1723 SOLDIERS 中位数
poj 1723 SOLDIERS 中位数
题意:
给n个士兵的坐标。要把他们移动到水平且相邻的一行。求最小步数。
分析:
中位数法,y方向易求,x方向x0->n+i与x0-i->n是相应的。故也能够转换成y方向的情况。
代码:
//poj 1723 //sep9 #include <iostream> #include <algorithm> using namespace std; const int maxN=10024; int x[maxN],y[maxN]; int cmp(int a,int b) { return a<b; } int main() { int i,n,ans=0; scanf("%d",&n); for(i=0;i<n;++i){ scanf("%d%d",&x[i],&y[i]); } sort(x,x+n); for(i=0;i<n;++i) x[i]-=i; sort(x,x+n); sort(y,y+n); for(i=0;i<n;++i){ ans+=abs(x[i]-x[n/2]); ans+=abs(y[i]-y[n/2]); } printf("%d",ans); return 0; }
poj 1723 SOLDIERS 中位数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。