栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

5235: 最大值与最小值(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

5235: 最大值与最小值(C语言)

Description

对于一个数组a,记cnt_min为数组a中最小值出现的次数, cnt_max为数组a中最大值出现的次数,请问在所有满足a≤cnt_min≤b且c≤cnt_max≤d的数组中数组长度的最小值是多少。

Input

第一行输入一个正整数T,代表测试数据的组数,接下来T行每行四个正整数a,b,c,d,含义如题所述。

1≤T,a,b,c,d≤100000,a≤b,c≤d

Output

对于每组数据,输出数组数组长度的最小值。

Sample Input

3

3 5 4 6

5  8  5  5

3  3  10  12

Sample Output

4

5

13

HINT

一个满足样例1的最短数组:[1,1,1,1];

一个满足样例2的最短数组:[2,2,2,2,2];

一个满足样例3的最短数组:[1,2,1,2,2,1,2,2,2,2,2,2,2];

解析:题目就是让我们求一个数组最小值个数要在a,b之间,最大值个数要在c,d之间,满足该条件数组的最小长度,有点类似两个区间求交集的微妙感觉。

分类讨论:1.要是两个区间分离,那么肯定是各取最小值。2.如果有交集,那么输出最小满足两者的那个数,我们想着假如c在ab之间,那么肯定c就是满足两者的最小值,同理a在cd之间,a就是该值。

注意点:两者分离是db。

#include 
int main()
{
    int t,a,b,c,d;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d%d",&a,&b,&c,&d);
        if(c>b||d=a&&c<=b) printf("%dn",c);	//c在ab之间 
        else if(a>=c&&a<=d) printf("%dn",a);	//a在zd之间 
    }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号