2021年10月新闻摘抄,seo顾问张智伟,邯郸h5开发,整合营销传播的明显特征是2 C. Challenging Cliffs
原题链接#xff1a;Problem - 1537C - Codeforces
rating : 1200
题目描述#xff1a;
你是一名游戏设计师#xff0c;想要创建一个障碍赛道。玩家将从左到右行走。你已经选择了 n 座山的高度#xff0c;并希望安排它们#xff0c;以便第一座…2 C. Challenging Cliffs
原题链接Problem - 1537C - Codeforces
rating : 1200
题目描述
你是一名游戏设计师想要创建一个障碍赛道。玩家将从左到右行走。你已经选择了 n 座山的高度并希望安排它们以便第一座和最后一座山的高度差的绝对值尽量小。
此外你想要使游戏更具挑战性由于上坡或平地比下坡更难走级别的难度将是山的数量 i1≤in使得 hi≤hi1其中 hi 是第 i 座山的高度。你不想浪费你建模的任何山因此你必须使用它们所有。
从所有使 |h1−hn| 最小化的安排中找到一个最困难的。如果有多个满足这些要求的排序可以选择任何一个。 思路描述
这道题的意思是只要后面一座山的高度大于等于前面这座山那我们就认为游戏总难度1总难度只跟山的数量有关与山之间具体差多少高度无关
所以我们就要将尽可能多的高山排在后面
首先找到高度差绝对值最小的两座山放在起点和重点小山在前高山在后
将剩下数据由小到大排序
比终点矮的山都要放在终点前这样保证了终点这座山没有被浪费其余的放在起点后由小到大输出即可
完整代码
#includeiostream
#includealgorithmint t;
int n;
int arr[1000100];
int main(){std::cint;while(t--){std::cinn;for(int i1;in;i)std::cinarr[i];std:: sort(arr1,arrn1);int cha arr[n] - arr[1];int loc 1;//找到最的差值for(int i 1;in;i){if(arr[i1]-arr[i]cha){cha arr[i1]-arr[i];loc i;}} std::swap(arr[1],arr[loc]);std::swap(arr[n],arr[loc1]);std:: sort(arr2,arrn);std::coutarr[1] ;for(int i2;in;i){if(arr[i]arr[1])std::coutarr[i] ;}for(int i2;in;i){if(arr[i]arr[1])std::coutarr[i] ;}std::coutarr[n]std::endl;;}
}