1 条题解
-
0
Idea
主要思路:分类讨论。
可以发现 中出现 个 时,长方体会退化成“矩形”;出现 个 将会退化成“线段”;出现 个 会退化成“点”,可以看出,长宽高出现 的情况十分特殊,所以考虑依此分类讨论。
为方便处理,我们先假设 满足 ,细分后可以得出如下 种情况:
的情况 结果 备注 ^ 其他 相当于“线段”的端点 ^ 相当于“线段”的内部 其他 相当于“矩形”的顶点 ^ 相当于“矩形”的边 相当于“矩形”的内部 其他 其他 相当于长方体的顶点 ^ 相当于长方体的棱 相当于长方体的表面 相当于长方体的内部 其他 Code
#include<bits/stdc++.h> #define int long long using namespace std; signed main(){ int x[3], k; cin >> x[0] >> x[1] >> x[2] >> k; sort(x, x + 3, greater<int>()); int a = x[0], b = x[1], c = x[2]; if(c == 1 && b == 1 && a == 1) cout << (k == 6 ? 1 : 0); else if(c == 1 && b == 1){ switch(k){ case 5 : cout << 2; break; case 4 : cout << a - 2; break; default : cout << 0; break; } } else if(c == 1){ switch(k){ case 4 : cout << 4; break; case 3 : cout << (a + b - 4) * 2; break; case 2 : cout << (a - 2) * (b - 2); break; default : cout << 0; break; } } else { switch(k){ case 3 : cout << 8; break; case 2 : cout << (a + b + c - 6) * 4; break; case 1 : cout << ((a - 2) * (b - 2) + (b - 2) * (c - 2) + (c - 2) * (a - 2)) * 2; break; case 0 : cout << (a - 2) * (b - 2) * (c - 2); break; default : cout << 0; } } return 0; }
- 1
信息
- ID
- 9650
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者