poj1723

原创 2012年03月21日 19:03:34
#include<iostream>
#include<algorithm>
using namespace std;

int N,x[10000],y[10000],rx,ry,t,sum;
int main(){
	cin>>N;	
	for(int i=0;i<N;i++){
		cin>>x[i]>>y[i];	
	}
	sort(y,y+N);
	ry=y[N/2];
	sort(x,x+N);
	for(int i=0;i<N;i++){	
		x[i]-=i;
	}
	sort(x,x+N);
	rx=x[N/2];	
	sum=0;
	for(int i=0;i<N;i++){
		t=y[i]-ry;
		if(t<0)
			t=-t;
		sum+=t;
	}
	for(int i=0;i<N;i++){
		t=x[i]-rx;
		if(t<0)
			t=-t;
		sum+=t;
	}
	cout<<sum<<endl;
	return 0;
}

很典型的一道题,算x起始位置也是找中位数

POJ 1723 SOLDIERS(水~)

Description 一些士兵站在矩阵的一些方格内,现要把他们移动到一横排,并连续地排成一队,问最少需要移动多少步 Input 第一行为士兵个数n,后面n行为每个士兵的位置坐标 Output...
  • V5ZSQ
  • V5ZSQ
  • 2015年07月06日 15:07
  • 531

POJ1723----SOLDIERS

利用了中位数思想。 借鉴内容 1 y方向: 要使士兵最后位于同一水平线,则最终所有士兵的y坐标相同。 将所有坐标的y值从小到大排序,对于首尾两个y值,移动到它们之间的任何y值所需要的步数是...
  • hy1405430407
  • hy1405430407
  • 2016年03月02日 19:39
  • 390

poj1723

士兵战队问题
  • yuhaozi001
  • yuhaozi001
  • 2014年09月10日 19:58
  • 325

poj1723(排序)

http://poj.org/problem?id=1723 SOLDIERS Time Limit: 1000MS Memory Limit: 10000K Total Submiss...
  • lanjiangzhou
  • lanjiangzhou
  • 2013年05月30日 10:56
  • 422

poj1723 排序+中位数

/** * poj1723 * 排序+中位数 * 目的纵坐标很容易想到是中位数,其实横坐标也一样 * 如果目的x坐标是a,a+1,a+2,那么移动步数应该是sum(|x[i] - a ...
  • northsnow_bupt
  • northsnow_bupt
  • 2014年03月12日 08:18
  • 203

分治算法--士兵排队(poj1723)

【问题描述】  在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数最表(x,y)表示。士兵可以沿着网格边上、下、左、右移动一步,但在同一时刻一个网格上只能有一名士兵。按照军...
  • Randyhe_
  • Randyhe_
  • 2017年11月05日 09:42
  • 70

poj1723 中位数的应用

N soldiers of the land Gridland are randomly scattered around the country. A position in Gridland i...
  • yuanba_xs
  • yuanba_xs
  • 2017年02月08日 23:31
  • 184

poj1723(士兵移动)

借鉴了别人的代码和思路    * 一 士兵有多种移动方式  * 通过适当的移动顺序和移动路线可以使得同一时刻不会有两名士兵站在同一点  * 二 题目要求最佳移动方式(即求移动的最少步数)  * 题目...
  • kath_y
  • kath_y
  • 2011年08月05日 20:11
  • 439

POJ1723 SOLDIERS【中位数+排序】

问题链接:POJ1723 SOLDIERS。 问题简述:有N个士兵,每个士兵开始站的坐标是(x,y),现在使得将N个士兵站在同一个水平线(即所有士兵的y坐标相同)并且x坐标相邻,每个士兵每次可以...
  • tigerisland45
  • tigerisland45
  • 2017年05月24日 17:49
  • 696

分治算法---poj1723【士兵排队】Soldier

问题:给出n个坐标表示n个点,并将这n个point排列在一条水平线上,要求挨个排序,最后达到  (x,y), (x+1, y), (x+2,y)……,求出移动的最少步数。 算法思想:分治算法+li...
  • wutong_v
  • wutong_v
  • 2016年06月07日 15:14
  • 876
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj1723
举报原因:
原因补充:

(最多只允许输入30个字)