cf382 B. Number Busters(数学)
题意:
给定整数 \(a,b,w,x,c\),每秒钟 \(c\) 会减小1。每秒钟若 \(b<x\) 则 \(b\) 减小 \(x\),否则 \(b=w-(x-b)\) 且 \(a\) 减小1。问至少几秒钟后 \(c\le a\)
思路:
假设最终 \(c\) 减去了 \(tot\),\(a\) 减小了 \(k\),则要求最小的 \(tot\) 满足 \(c-tot\le a-k\)
让我们看看 \(b\) 变化了多少:\(b_{final}=b-(tot-k)x+k(w-x)=b-tot\cdot x+kw\) 。\(b_{final}\) 自然要大于等于0。而且只要 \(b_{final}\ge 0\) ,就一定存在某种操作顺序使得 \(b\) 一直大于等于0。
联立上面的两个式子 \(k\le a-c+tot,b-tot\cdot x+kw\ge 0\),解得 \(tot\ge ((c-a)w-b)/(w-x)\)
上取整,再与0取个max就是答案
cin >> a >> b >> w >> x >> c;
cout << max(0ll, cei(w*(c-a)-b, w-x));

浙公网安备 33010602011771号