输油管道问题 (POJ - 1723) 先看算导上输油管道问题的描述: 这个题,虽然说给出了井的x,y坐标,但是要修建的主管道却只是一条横向的,而且其余管道也只是到这条管道的竖向距离。 那么,就转换为确定一条直线 y = m,使得其它个点到这条直线的距离最多。也许不需要多的提示,大家的直觉就会想到应该 选所有y值...
SOLDIERS(POJ 1723) 这个题和算法书上的2.22题类似,因此y轴只要求出中位数,然后所有的点都要移动到中位数。 x轴的情况有点不同, 想了好久终于想明白了。 首先将x升序排序(因为最终的相对位置是不变的),然后设首个元素的基准点为P,则|x[0] - (p+0)| + |x[1] - (p+1)| + |x[2] - (p+2...
技术标签: poj 算法 编程 分治算法 士兵排队【问题描述】 在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数最表(x,y)表示。士兵可以沿着网格边上、下、左、右移动一步,但在同一时刻一个网格上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y)...
id=1723 【算法】 中位数 【代码】 #include <algorithm>#include<bitset>#include<cctype>#include<cerrno>#include<clocale>#include<cmath>#include<complex>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<deque>#include<exception>#include<fstream>#include<functional>#include<l...
POJ 1723-SOLDIERS http://acm.pku.edu.cn/JudgeOnline/problem?id=1723 大意,给定一堆点的坐标,每个点可以上下左右一格一格地移动。要把这堆点一个接一个地排列在一条水平线上,求最少的移动步数。 数学思维的题目啊……我知道我... POJ 1723 Soiders 题意:一些士兵站在矩阵的一些方格内,现要把他们移...
//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]);...
POJ 1723 士兵排队 C语言实现 ** ** 原文 ** Description N soldiers of the land Gridland are randomly scattered around the country. A position in Gridland is given by a pair (x,y) of integer coordinates. Soldiers can move - in one move, one soldier can go one unit up, down, left or...
poj1723,题意:一些士兵站在矩阵的一些方格内,现要把他们移动到一横排,并连续地排成一队,问最少需要移动多少步。分析:先将他们移动到同一横排,这横排应该是他们纵坐标的中位数,才能使得此过程总步数最少。然后要把他们紧凑起来。我们先把横坐标排序,并假设起点是a,
算法导论_中位数与带权中位数。poj 1723 2011-11-03 14:14 −... sleeper_qp 0 1067 带权中位数/sgu 114 Telecasting station 2012-12-16 17:08 −题意 百慕大的每一座城市都坐落在一维直线上。这个国家的政府决定建造一个新的广播电视台。经过了许多次试验后,百慕大的科学家们提出了一个结论,在每...
我们很容易能想到,让所有士兵y相等就要把他们都移动到所有士兵y的中位数上。这时可能存在有士兵重合在同一格点的情况。后来x轴的情况: x轴时,先进行一次排序后,假设水平线上的n个点存储在数组a[n]中,则第一个点a[0]最终排序后的位置是addr,a[1]的最终位置是(addr+1),a[2]的最终位置是(addr+2)……a...