codeforce 402A - Nuts

题目链接:http://codeforces.com/problemset/problem/402/A

题目大意:每个盒子可由x块挡板分为x+1节,但每个盒子不能超过k节,每节不能放超过v个坚果,现在有a个坚果,b块隔板,问最多需要多少个盒子。

题目分析:模拟。

代码参考:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
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;
}


你可能感兴趣的:(Water~~~,Simulation)