Hướng dẫn giải của Bedao Mini Contest 15 - BINGCHILLING


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: bedao

Ta có thể coi mỗi set Bing Chilling gồm ~x_i + y_i~ chiếc sẽ có giá là ~x_i \times 5~ đồng ~\Rightarrow~ Ta sẽ mua trọn vẹn một số set và mua lẻ một số chiếc Bing Chilling.

Để phải trả ít tiền nhất, ta cần phải cố gắng mua nhiều set Bing Chilling nhất có thể; số set Bing Chilling phải mua sẽ là ~\lfloor \frac{a_i}{x_i+y_i} \rfloor~, phần còn lại ta sẽ mua lẻ.

Cần chú ý, giá mua lẻ ~v~ chiếc Bing Chilling sẽ là ~\min(v,x_i) \times 5~.

Code mẫu

//TrungNotChung
#include <bits/stdc++.h>
#define pii pair<int , int>
#define fi first
#define se second
#define BIT(x,i) (1&((x)>>(i)))
#define MASK(x)  (1LL<<(x))
#define CNT(x) __builtin_popcountll(x)
#define task "tnc"  

using namespace std;
const int N = (int)3e5+282;
const int mod = (int)1e9+7;

void solve()
{
    int numTest;
    cin >> numTest;
    while(numTest--)
    {
        int x, y, n;
        cin >> x >> y >> n;
        int tmp = n / (x + y);
        int cnt = tmp * x + min(n - tmp * (x + y), x);
        cout << cnt * 5 << '\n';
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    #ifndef ONLINE_JUDGE
    freopen(task".inp","r",stdin);
    freopen(task".out","w",stdout);
    #endif // ONLINE_JUDGE
    solve();
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.