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));
posted @ 2022-03-18 16:31  Bellala  阅读(39)  评论(0)    收藏  举报