Equal Candies
题目连结
首先要了解以下几个条件
1.不能把糖果换到其他盒
2.只能用减少(吃)的方式来达成平衡(每盒糖果数量相同)
所以我们能得出一个结论:
要把所有盒子的糖果数量减少
到跟最少糖果数量的盒子相同
#include <iostream>#include <vector>#define ll long long intusing namespace std;int main(int argc, char const *argv[]){ int t, n; cin >> t; while (t--) { int ans, count = 0; cin >> n; vector<ll> v(n); /* 核心思路: 1.找到糖果数量最少的盒子 2.把(其他盒子糖果的数量)-最少糖果的数量 */ cin >> v[0]; // 在这里是为了避免等等可能会产生V[-1]<V[0]的情况 ans = v[0]; for (int i = 1; i < n; i++) // 因为v[0]已经输入了,从v[1]开始迴圈 { cin >> v[i]; if (ans > v[i]) // 找到最少糖果的盒子里糖果的数量 { ans = v[i]; } } // 开始计算要吃掉几颗 for (int i = 0; i < n; i++) { if (ans < v[i]) // 盒子内的数量不是最小的数量 { count = (v[i] - ans) + count; // 吃掉糖果+已经累积吃掉的糖果 } } cout << count << endl; } return 0;}