题解:P13598 [NWRRC 2022] Absolutely Flat
我看到另外两位大佬的代码好长长长长啊。
思路
不妨设
此时,分情况讨论。
- 如果
a_1=a_4 ,根据不等式,说明a_1=a_2=a_3=a_4 。
不需要使用垫子,直接输出1,结束。 - 反之,
a_1\not=a_4 ,根据不等式说明a_1<a_4 。
这时为了使四条桌子腿齐平,必须要给a_1 使用垫子,a_1 的长度变成a_1+b 。 - 若
a_1+b=a_2=a_4 ,根据不等式可以推出a_2=a_3=a_4 ,所以得到此时4 条腿长度相等,可以把桌面弄平。输出1,结束。 - 反之,
a_1+b\not=a_2 或a_2\not=a_4 ,那么即使给a_1 使用垫子也没有用。输出0,结束。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[5], b;
for(int i=1; i<=4; i++)
cin >> a[i];
cin >> b;
// 排序
sort(a + 1, a + 5);
// 不用垫子
if(a[1] == a[4]) cout << 1;
// 用垫子, 效果很好
else if(a[1] + b == a[2] && a[2] == a[4]) cout << 1;
// 用垫子, 效果不好
else cout << 0;
}