1 条题解
-
0
AC记录:https://www.luogu.com.cn/record/77523868
题面描述
本题考查分支结构以及 sort 的使用。
给你一个数组 a_1,a_2...a_na1,a2...an ,还有一个整数 nn 和整数 kk 。
你必须把这堆数组恰好分成 kk 个非空数组。然后,计算每个子数组上对最小整数,并取 kk 个最小值中的最大整数。
刚刚点进这道题,看上去不太好想
这道题,要分类讨论。
我们按照 kk 分三类。
第一,如果 k=1k=1
这种情况,也只能选择最小数了。
所以就用一次 sort ,找到数组中最小值
输出该值即可。
第二,如果 k\ge3k≥3
我们就可以单独划出最大值,并将其输出。
第三,如果 k=2k=2
此时,需要比较 a_1a1 和 a_nan 的大小,输出大的。
接下来,上代码。
#include<iostream> #include<algorithm> using namespace std; int n,k;//定义变量 int main(){ cin>>n>>k; const int qwq=n+5; int a[qwq];//定义数组 for(int i=1;i<=n;i++) cin>>a[i]; if(k==1){//第一种情况 sort(a+1,a+n+1);//排序 cout<<a[1]<<endl;//输出最小值 } else if(k>=3){//第二种情况 sort(a+1,a+n+1);//排序 cout<<a[n]<<endl;//输出最大值 } else{//第三种情况 if(a[1]>=a[n]) cout<<a[1]<<endl; else cout<<a[n]<<endl; //输出a[1]和a[n[中大的。 } return 0;//养成好习惯。 }
创作不易,求管理大大给过!
https://www.luogu.com.cn/blog/Na2CO3QwQ/cf870b-ti-xie
搬运自己的题解
- 1
信息
- ID
- 3339
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 7
- 已通过
- 2
- 上传者