士兵站队
来源:互联网 发布:模拟城市我是市长知乎 编辑:程序博客网 时间:2024/04/28 19:12
士兵站队
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 7 Accepted Submission(s) : 5
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数坐标(x,y)表示。士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排成(x,y),(x+1,y),...,(x+n-1,y)。如何选择x和y的值才能使士兵们以最少的总移动步数排成一列。
Input
输入有多组数据,每组数组的第一行是士兵数n,1<=n<=10000。接下来n行是士兵的初始位置,每行2个整数x和y,-10000<=x,y<=10000。
Output
对于每组数据输出士兵排成一行需要的最小移动步数。
Sample Input
51 22 21 33 -23 3
Sample Output
8
#include <iostream>#include <cmath>#include <stdio.h>#include <algorithm>using namespace std;int x[10050];int y[10050];int main (){ int t; int xx,yy; int max1;while(scanf("%d",&t)!=EOF){ max1=0; for(int i=1;i<=t;i++) scanf("%d%d",&x[i],&y[i]);sort(x+1,x+t+1);sort(y+1,y+t+1); for(int i=1;i<=t;i++) x[i]=x[i]-i; //将x,y排序以后模拟让x坐标从1开始sort(x+1,x+t+1); xx=x[(1+t)/2]; yy=y[(1+t)/2]; for(int i=1;i<=t;i++) { max1+=abs(x[i]-xx); max1+=abs(y[i]-yy); } printf("%d\n",max1);} return 0;}
- 士兵站队
- 士兵站队
- 士兵站队(pku1723)
- 士兵站队问题
- 士兵站队问题sol
- 士兵站队问题
- 【9209】士兵站队问题
- 洛谷 P1889 士兵站队
- 士兵站队问题
- Vijos P2773 士兵站队
- 练习赛10.5.士兵站队
- 南邮-1212-士兵站队问题
- Codevs P3625 士兵站队问题
- 看到的士兵站队问题
- 中位数的应用—士兵站队问题
- 南邮 OJ 1212 士兵站队问题
- 中位数——士兵站队 nkoj 3551
- POJ - 1723 Soldiers 士兵站队 排序+中位数
- 一个java文件经过什么流程转换成.class文件--javac(献给初学者)
- Linux:Failed to get exclusive lock on the configuration file
- 看懂亮度直方图 让你的曝光达到完美
- JQuery 获取选中checkbox值
- 不要告诉我你懂margin
- 士兵站队
- android 多线程 - 并行包线程池为例说说线程池的设计需求及使用
- Ogre:render to texture
- 大学期间遇到的问题
- 学习笔记:adb的一些常用指令
- 田忌赛马
- .swf格式Flash文件/课件 完美/清晰在IPAD上播放
- 32bit OS访问64GB物理内存——PAE技术
- SEAndroid策略