排序
Carney_Lsz
要相信每天都值得期待.
展开
-
【Codeforces】Birthday
题目链接题目大意:n人围成一个圈,每个人有自己的高度,对这n个人进行重新的排列,使得满足任意两个人之间高度差的最大值最小并输出这个顺序。思路:因为是环形排列,所以先将原数组从小到大排序,然后左边放一个,右边放一个。可以利用按大小顺序排序后的下标奇偶性来判断放左还是放右。AC:#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll a[1010]原创 2020-07-27 19:24:39 · 174 阅读 · 0 评论 -
【洛谷】修理牛棚 Barn Repair(贪心、快排)
题目链接思路:首先可以先进行一次特判,如果给的木板数大于牛的总数则可以直接输出牛的数目(此时牛的数目就是最短木板总长度)。其次题目只是说明了有c只牛,它们的牛棚编号并非有序,所以要先对牛棚编号从大到小排序(从小到大也可以,从大到小更容易表示)。然后根据牛棚编号算出来每相邻两个牛棚之间的距离并对这个距离从大到小排序以及算出相距最远的两个牛棚距离ans,因为一共m个木板,所以对ans由大到小减去m-1个比较大距离所剩大小就是最短木板总长度。AC:#include<iostream>原创 2020-07-27 15:23:45 · 247 阅读 · 0 评论 -
【洛谷】排队接水(贪心、排序)
题目链接思路:需要记录下标进行排序,因此可以使用结构体来存储每个人所用时间和下标(初始位置)。又因为要求平均排队时间最短,所以要把时间短的排在前面,利用sort可以快速排序。最终输出排序后的下标顺序,然后遍历计算总等待时间除以总人数并输出即可。AC:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct pre{ int b,num;原创 2020-07-27 11:13:54 · 266 阅读 · 0 评论