比赛 |
2025暑期集训第7场 |
评测结果 |
AAAAWWAWAA |
题目名称 |
倒水 |
最终得分 |
70 |
用户昵称 |
OTTF |
运行时间 |
1.406 s |
代码语言 |
C++ |
内存使用 |
3.65 MiB |
提交时间 |
2025-08-11 15:34:34 |
显示代码纯文本
#include <cstdio>
#include <iostream>
using namespace std;
int maxs[4];
int nows[4];
int x;
int dep;
bool dfs (int now) {
if (nows[1] == x || nows[2] == x || nows[3] == x) {
return true;
}
if (now == dep) {
return false;
}
int ti, tj;
for (int i = 1; i <= 3; i++) {
if (nows[i]) {
ti = nows[i];
for (int j = 1; j <= 3; j++) {
if (i != j && (maxs[j] > nows[j])) {
tj = nows[j];
if (nows[i] > (maxs[j] - nows[j])) {
nows[i] -= (maxs[j] - nows[j]);
nows[j] = maxs[j];
}
else {
nows[j] += nows[i];
nows[i] = 0;
}
if (dfs (now + 1)) {
return true;
}
nows[i] = ti;
nows[j] = tj;
}
}
}
}
return false;
}
int main () {
freopen ("pourwater.in", "r", stdin);
freopen ("pourwater.out", "w", stdout);
cin >> maxs[1] >> maxs[2] >> maxs[3] >> x;
nows[1] = maxs[1];
if (x > maxs[1]) {
cout << "false" << endl;
return 0;
}
for (dep = 1; dep <= 16; dep++) {
if (dfs (0)) {
cout << dep << endl;
return 0;
}
}
cout << "false" << endl;
return 0;
}