题目描述 Description

在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点用整数坐标(x,y)表示。士兵们可以沿网格边往上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何选择x和y的值才能使士兵们以最少的总移动步数排成一行。编程计算使所有士兵排成一行需要的最少移动步数。

输入描述 Input Description

第1行是士兵数n,1≤n≤10000。接下来n行是士兵的初始位置,每行有2个整数x和y,-10000≤x,y≤10000。

输出描述 Output Description

一个数据,即士兵排成一行需要的最少移动步数。

样例输入 Sample Input

5

1 2

2 2

1 3

3 -2

3 3

样例输出 Sample Output

8

数据范围及提示 Data Size & Hint

-10000≤x,y≤10000

这道题···真是虚了···

先考虑纵坐标,要统一到一条线上。我们不妨想,对于最上方和最下的两个点,如果想让他们到某个点的垂直距离和最小,这个点一定在两点中间;对于任意一对点同理。因此对于最里面的一对点,也是这样。所以我们应该取这些点的中位数作为横坐标。

这就相当于:对于数轴上的一些点,选择一个点到所有点距离和最小,那么这个点是坐标为所有点中位数的那个点。

接下来,对于横坐标,如何确定X轴方向上的最佳的“最终位置”?
共n个士兵
他们相应的X轴坐标为:X0,X1,X2 …… …… Xn-1
设,士兵需要移动到的“最终位置”的X轴坐标值为:k,k+1,k+2 …… …… k+(n-1)
则所求最优步数S=|X0-k|+|X1- (k+1) |+|X2-(k+2)|+ …… +|Xn-1-(k+(n-1))|
经过变形S=|X0-k|+|(X1-1)-k|+|(X2-2)-k|+ …… …… +|(Xn-1-(n-1))-k|
注意到公式的形式与Y轴方向上的考虑一样,同样是n个已知数分别减去一个待定数后取绝对值,然后求和
因此还是采用取中位数的办法求得k值,最后算出最优解。

这题我实在不想再说了,直接贴代码

然后我要去练基本算法了···

//soldiers
//input output txt
//copyright by ametake
#include#include#includeusing namespace std;
const int maxn=10000+10;
struct node
{
int x,y;
}e[maxn];
int n;
long long ans=0;
int cmpy(node a,node b)
{
return a.y>1;
int midx=e[i].x;
int l=midx,r=midx+1;
int j=i+1;
while (i>0)
{
ans+=abs(e[i].x-l);
l--;
i--;
}
while (j<=n)
{
ans+=abs(e[j].x-r);
++r;
++j;
}
*/

今天实在是虚了。突如其来,如潮水一般的感情就这么涌过来把我扑倒在沙岸上,一时间心里百般滋味。

——不才明主弃,多病故人疏

【日常学习】【数学】codevs3625 士兵站队问题题解相关推荐

  1. 《Free Pascal 语言与基础算法》_数据排序_9_士兵站队问题题解

    题目描述 在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点用整数坐标(x,y)表示.士兵们可以沿网格边往上.下.左.右移动一步,但在同一时刻任一网格点上只能有一名士兵.按照军官的命令,士兵 ...

  2. 【数学】Why Study Math 为什么学习数学

    看到下面的一些评论,很感动: You know, in CHina,most of people know how to learn mathmatics. But few of them know ...

  3. 我为什么重新开始学习数学?

    我为什么重新开始学习数学? 突然觉得自己真是可笑至极,到今天我还没有明白为什么要学习.在学校学习数学,开始的时候还算跟得上,也不是特讨厌.慢慢地 x,y等符号越来越多,公式繁多,表述起来越来越复杂,自 ...

  4. JAVA视频学习笔记-马士兵(六)

    `JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...

  5. 为什么要学好数学,计算机与数学的关系,学习数学的过程

    学计算机为什么要学好数学,数学可以为我们提供什么样的思想与工具,数学又在那些方面潜移默化的影响我们的日常? 数学是抽象的, 但也正因为所研究出的抽象关系可以指代任何具体事物, 要先弄清关系所指的任务. ...

  6. 日常学习中遇到的好的资源(Graph Clustering and GNN)(持续更新)

    将自己在日常学习中遇到的好资源记录下来! 本文目录 1.多视图聚类总结: 2.论文阅读:One2Multi Graph Autoencoder for Multi-view Graph Cluster ...

  7. [转]谈谈工科学生如何学习数学

    不少工科学生特别是工科研究生对数学基础不足感到压力.确实,缺乏数学的帮助会使得学生们的研究缺乏思路和工具,缺乏捕捉问题的敏感性,缺乏抽取问题本质的能力,缺乏处理问题的技巧和方法.我们许多硕士生.博士生 ...

  8. 计算机数学课程标准,学习数学课程标准心得体会

    新课程标准下数学教学过程对学校管理,对教师和学生都提出了新的要求.下面是学习啦小编为大家整理的学习数学课程标准心得体会,供你参考! 学习数学课程标准心得体会篇1 通过对<新课程标准>学习, ...

  9. Why Study Math 为什么学习数学

    1.The world is pretty complicated today compared with what it was forty years ago.And it's getting m ...

最新文章

  1. 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  2. LeetCode01_二分法专题
  3. OpenCv java 颜色空间(9)
  4. TortoiseSVN使用方法
  5. 基于springboot2.x集成缓存注解及设置过期时间
  6. C和汇编----存储类别、链接和内存管理
  7. 十八、MySQL之TCL事务控制语言(详解)
  8. python最基本的语句_Python的基本语句
  9. POJ 1797 Heavy Transportation 最短路变形(dijkstra算法)
  10. [Python] * 和 ** 的用法
  11. 【转载】高速电路设计中的电源地
  12. Python中,如何使用ImageDraw在Image上绘制粗线?
  13. 树莓派4B安装中文输入法(Googlepinyin)
  14. Chrome安装ElasticSearch-head插件
  15. 模式先行全新解读微商分销系统
  16. Shell攻关之shell基础
  17. C语言简单编程案例(一)
  18. python实现文档图像倾斜矫正,实现类似扫描仪功能
  19. Linux命令全称(转)
  20. google 天气免费api

热门文章

  1. 网页开发工具有哪些?——开发者必备的15个Web开发工具
  2. power automate功能概述与学习实践(Microsoft Flow)
  3. Python数据挖掘——烟火图像分类:传统机器学习建模方法与卷积神经网络性能比较
  4. 【笔记分享】H桥电机正反转
  5. matlab 毕业答辩,MATLAB的答辩.ppt
  6. Mysql错误编码和解释表
  7. 调试iphone上html,如何调试 iPhone Safari 浏览器的CSS兼容问题
  8. 苹果手机实现NTU校园网连接自动化
  9. Linux中常用的tar解压打包命令语法介绍
  10. 【Electron-vue】构建桌面应用(25)- Ubuntu安装deb文件任务栏不显示应用图标