题意
给你n个采集点,分上下两端,接下来两行是上下两端的采集点,问是否存在可以横向穿过的管道,能的话输出Yes 并输出最大直径,不能的话输出No并输出需要削掉的最小高度
思路
1.无思路可认真观察图形,可发现 第二张图的上端的最小高度和下端的最大高度相等因此穿不过去
2.所以我们可以求出上段的最小高度和下端的最大高度,进行比较,若大于则输出Yes并输出差值,相反则输出No并输出差值+1
坑点
无
代码
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int main ()
{
int n,i;
scanf ("%d",&n);
int a[n],b[n];
for (i=0;i<n;i++)
scanf ("%d",&a[i]);
for (i=0;i<n;i++)
scanf ("%d",&b[i]);
sort(a,a+n);
sort(b,b+n);
if (a[0]>b[n-1])
{
printf ("Yes ");
printf ("%d",a[0]-b[n-1]);
}
else
{
printf ("No ");
printf ("%d",b[n-1]-a[0]+1);
}
return 0;
}
总结
难度简单,认真思考,进行模拟即可