【日常学习】【数学】codevs3625 士兵站队问题题解
在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点用整数坐标(x,y)表示。士兵们可以沿网格边往上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何选择x和y的值才能使士兵们以最少的总移动步数排成一行。编程计算使所有士兵排成一行需要的最少移动步数。
第1行是士兵数n,1≤n≤10000。接下来n行是士兵的初始位置,每行有2个整数x和y,-10000≤x,y≤10000。
一个数据,即士兵排成一行需要的最少移动步数。
5
1 2
2 2
1 3
3 -2
3 3
8
-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 士兵站队问题题解相关推荐
- 《Free Pascal 语言与基础算法》_数据排序_9_士兵站队问题题解
题目描述 在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点用整数坐标(x,y)表示.士兵们可以沿网格边往上.下.左.右移动一步,但在同一时刻任一网格点上只能有一名士兵.按照军官的命令,士兵 ...
- 【数学】Why Study Math 为什么学习数学
看到下面的一些评论,很感动: You know, in CHina,most of people know how to learn mathmatics. But few of them know ...
- 我为什么重新开始学习数学?
我为什么重新开始学习数学? 突然觉得自己真是可笑至极,到今天我还没有明白为什么要学习.在学校学习数学,开始的时候还算跟得上,也不是特讨厌.慢慢地 x,y等符号越来越多,公式繁多,表述起来越来越复杂,自 ...
- JAVA视频学习笔记-马士兵(六)
`JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...
- 为什么要学好数学,计算机与数学的关系,学习数学的过程
学计算机为什么要学好数学,数学可以为我们提供什么样的思想与工具,数学又在那些方面潜移默化的影响我们的日常? 数学是抽象的, 但也正因为所研究出的抽象关系可以指代任何具体事物, 要先弄清关系所指的任务. ...
- 日常学习中遇到的好的资源(Graph Clustering and GNN)(持续更新)
将自己在日常学习中遇到的好资源记录下来! 本文目录 1.多视图聚类总结: 2.论文阅读:One2Multi Graph Autoencoder for Multi-view Graph Cluster ...
- [转]谈谈工科学生如何学习数学
不少工科学生特别是工科研究生对数学基础不足感到压力.确实,缺乏数学的帮助会使得学生们的研究缺乏思路和工具,缺乏捕捉问题的敏感性,缺乏抽取问题本质的能力,缺乏处理问题的技巧和方法.我们许多硕士生.博士生 ...
- 计算机数学课程标准,学习数学课程标准心得体会
新课程标准下数学教学过程对学校管理,对教师和学生都提出了新的要求.下面是学习啦小编为大家整理的学习数学课程标准心得体会,供你参考! 学习数学课程标准心得体会篇1 通过对<新课程标准>学习, ...
- Why Study Math 为什么学习数学
1.The world is pretty complicated today compared with what it was forty years ago.And it's getting m ...
最新文章
- 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
- LeetCode01_二分法专题
- OpenCv java 颜色空间(9)
- TortoiseSVN使用方法
- 基于springboot2.x集成缓存注解及设置过期时间
- C和汇编----存储类别、链接和内存管理
- 十八、MySQL之TCL事务控制语言(详解)
- python最基本的语句_Python的基本语句
- POJ 1797 Heavy Transportation 最短路变形(dijkstra算法)
- [Python] * 和 ** 的用法
- 【转载】高速电路设计中的电源地
- Python中,如何使用ImageDraw在Image上绘制粗线?
- 树莓派4B安装中文输入法(Googlepinyin)
- Chrome安装ElasticSearch-head插件
- 模式先行全新解读微商分销系统
- Shell攻关之shell基础
- C语言简单编程案例(一)
- python实现文档图像倾斜矫正,实现类似扫描仪功能
- Linux命令全称(转)
- google 天气免费api
热门文章
- 网页开发工具有哪些?——开发者必备的15个Web开发工具
- power automate功能概述与学习实践(Microsoft Flow)
- Python数据挖掘——烟火图像分类:传统机器学习建模方法与卷积神经网络性能比较
- 【笔记分享】H桥电机正反转
- matlab 毕业答辩,MATLAB的答辩.ppt
- Mysql错误编码和解释表
- 调试iphone上html,如何调试 iPhone Safari 浏览器的CSS兼容问题
- 苹果手机实现NTU校园网连接自动化
- Linux中常用的tar解压打包命令语法介绍
- 【Electron-vue】构建桌面应用(25)- Ubuntu安装deb文件任务栏不显示应用图标