1 条题解

  • 0
    @ 2022-7-6 22:42:53

    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\ge3k3

    我们就可以单独划出最大值,并将其输出。

    第三,如果 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
    上传者