iT邦幫忙

0

[一天至少一題直到 ICPC 開賽 #014] 解題:Equal Candies(12/23)

  • 分享至 

  • xImage
  •  

Equal Candies

題目連結

首先要了解以下幾個條件

1.不能把糖果換到其他盒
2.只能用減少(吃)的方式來達成平衡(每盒糖果數量相同)

所以我們能得出一個結論:
要把所有盒子的糖果數量減少到跟最少糖果數量的盒子相同

#include <iostream>
#include <vector>
#define ll long long int

using 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;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言