题解 P5116 【[USACO18DEC]Mixing Milk】
程序员文章站
2022-09-01 17:46:12
这题其实完全可以放到入门,其实只要模拟倒牛奶的结果就可以了! 1 #include 2 using namespace std; 3 struct node{ 4 int Volume,Milk;//Volume=c,Milk=m 5 }a[5];//用来存放三个桶的相关信息 6 v ......
这题其实完全可以放到入门,其实只要模拟倒牛奶的结果就可以了!
1 #include<cstdio> 2 using namespace std; 3 struct node{ 4 int volume,milk;//volume=c,milk=m 5 }a[5];//用来存放三个桶的相关信息 6 void pour(int from,int to){//模拟倒牛奶的过程,表示从from桶倒到to桶 7 if(a[from].milk<=a[to].volume-a[to].milk){//如果可以把from桶倒完的情况 8 a[to].milk+=a[from].milk;//to桶的牛奶加上了from桶的 9 a[from].milk=0;//from桶的牛奶倒空了 10 } 11 else{//倒不完的情况 12 a[from].milk=a[from].milk-a[to].volume+a[to].milk;//from桶剩下的牛奶 13 a[to].milk=a[to].volume;//to桶倒满了 14 } 15 } 16 int main(){ 17 for(int i=1;i<=3;i++) 18 scanf("%d%d",&a[i].volume,&a[i].milk);//输入 19 for(int i=1;i<=33;i++){//按顺序完成1~99的倒牛奶过程 20 pour(1,2);//1倒到2 21 pour(2,3);//2倒到3 22 pour(3,1);//3倒到1 23 } 24 pour(1,2);//第100次 25 for(int i=1;i<=3;i++) 26 printf("%d\n",a[i].milk);//输出最终结果 27 return 0; 28 }
上一篇: 古墓