换标题格式了hh
这题其实数据范围很小,直接暴力求解即可。
先设一个变量i为还剩多少次,每次执行后i-1,如果i=0的话就跳出循环。
每次倒牛奶的操作,例如1倒给2,就是设一个变量$x=min(s_1,c_2-s_2)$。也就是倒到1空或2满为止。
代码实现:
#include <bits/stdc++.h>
using namespace std;
int c[4], s[4];
int m1, m2, m3;
int main() {
for (int i = 1; i <= 3; i++) scanf("%d%d", &c[i], &s[i]);
int i = 100;
while (i) {
if (i) {m1 = min(s[1], c[2] - s[2]); s[1] -= m1, s[2] += m1; i--;}
if (i) {m2 = min(s[2], c[3] - s[3]); s[2] -= m2, s[3] += m2; i--;}
if (i) {m3 = min(s[3], c[1] - s[1]); s[3] -= m3, s[1] += m3; i--;}
if (!i) break;
}
printf("%d\n%d\n%d", s[1], s[2], s[3]);
return 0;
}
想问为什么不加if(i)会tle
tql