题解 CF1385A 【Three Pairwise Maximums】

· · 题解

这道题就是一道数学题(废话)。

不妨假设 a≤b≤c

∵ x=\max(a,b) ,y=\max(a,c),z=\max(b,c) ∴ x=b,y=c,z=c

于是我们得出,当输入的 x,y,z 中最大的两个数相等时,一定会存在满足条件的 a,b,c。构造 a=1,b=\min(x,y,z),c=\max(x,y,z)

然而,我们发现判断 x,y,z 之间的大小关系太烦(一点也不烦),于是我就使用了数组,sort 一下就搞定了。

update 7.29

程序的输出有误,我复制成最开始的错程序了,非常抱歉。感谢@xyizd 巨佬指出错误。

update 7.30

LaTeX 使用错误,感谢@Thomas_Cat 大佬指出错误

于是就有以下代码

#include<bits/stdc++.h>
#define FOR(i,j,k)  for(int i=(j);i<=(k);i++)
using namespace std;
int tc,x,y,z;
int a[5];
inline int read()
{
    int x=0,f=1;char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
    return x*f;
}
int main()
{
    tc=read();
    while(tc--)
    {
        a[1]=read(),a[2]=read(),a[3]=read();
        sort(a+1,a+4);
        if(a[1]!=a[2]&&a[2]!=a[3])
            puts("NO");
        else
        {
            if(a[2]!=a[3]&&a[1]==a[2])
            {
                puts("NO");
                continue;
            }
            puts("YES");
            printf("1 %d %d\n",a[1],a[3]); 
        }

    }
    return 0;
}

❀完结撒花❀