題目鏈接: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;
}