专栏文章

题解:P13598 [NWRRC 2022] Absolutely Flat

P13598题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@miohuzcj
此快照首次捕获于
2025/12/02 19:27
3 个月前
此快照最后确认于
2025/12/02 19:27
3 个月前
查看原文
我看到另外两位大佬的代码好长长长长啊。

思路

不妨设 a1a2a3a4a_1\le a_2\le a_3\le a_4(对 aa 数组排序实现)。
此时,分情况讨论。
  • 如果 a1=a4a_1=a_4,根据不等式,说明 a1=a2=a3=a4a_1=a_2=a_3=a_4
    不需要使用垫子,直接输出 1,结束。
  • 反之,a1a4a_1\not=a_4,根据不等式说明 a1<a4a_1<a_4
    这时为了使四条桌子腿齐平,必须要给 a1a_1 使用垫子,a1a_1 的长度变成 a1+ba_1+b
  • a1+b=a2=a4a_1+b=a_2=a_4,根据不等式可以推出 a2=a3=a4a_2=a_3=a_4,所以得到此时 44 条腿长度相等,可以把桌面弄平。输出 1,结束。
  • 反之,a1+ba2a_1+b\not=a_2a2a4a_2\not=a_4,那么即使给 a1a_1 使用垫子也没有用。输出 0,结束。

代码

CPP
#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;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...