codeforce 402A - Nuts

題目鏈接:http://codeforces.com/problemset/problem/402/A

題目大意:每個盒子可由x塊擋板分爲x+1節,但每個盒子不能超過k節,每節不能放超過v個堅果,現在有a個堅果,b塊隔板,問最多需要多少個盒子。

題目分析:模擬。

代碼參考:

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<cstring>
#include<sstream>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;

int main()
{
    int k, a, b, v, cnt;
    while(~scanf("%d%d%d%d", &k, &a, &b, &v))
    {
        cnt = 0;
        while(b>=k-1 && a>=k*v)//每個盒子最多放k-1塊擋板,k*v個堅果,如果此時還多餘k-1快擋板並且還多餘k*v個堅果
        {
            b -= k-1;//每次用掉k-1塊擋板
            a -= k*v;//每次放入k*v個堅果
            cnt++;//每次用掉一個盒子
        }
        if(b>0 && a>0)//如果還有剩餘的擋板並且還有多餘堅果
        {
            a -= (b+1)*v;//用掉(b+1)*v個堅果(也可能不足v個)
            cnt++;//但肯定還是要用掉一個盒子
        }
        while(a>0)//如果仍然有多餘
        {
            a -= v;//每次用掉v個堅果(最後一次可能不足v個)
            cnt++;//但肯定還是要用掉一個盒子

        }
        printf("%d\n", cnt);
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章