码迷,mamicode.com
首页 > 其他好文 > 详细

CF1296B - Food Buying 题解

时间:2020-02-06 15:01:34      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:ase   代码   math   floor   case   span   ISE   操作   官方   

官方题解给出的是 \(O(t\log s)\) 的解法,但实际上我们可以做到单次查询 \(O(1)\)\(O(t)\) 做法.
同样是贪心,可以看出,我们每次花费 \(10\) 显然可以做到花费钱数最大化.
\(\mathbf{ans}= \begin{cases} \lfloor \dfrac{s}{9} \rfloor \times 10 +s\bmod 9-1,9|s \\ \lfloor \dfrac{s}{9} \rfloor \times 10 +s\bmod 9, \rm Otherwise \end{cases}\)
为什么在 \(9|s\) 的时候需要最后减去一个 \(1\) 呢?因为此时在最后一次操作时 \(s\) 仅会剩下 \(9\),如果仍然用 \(\lfloor \dfrac{s}{9} \rfloor \times 10 +s\bmod 9\) 的话答案就会多出 \(1\),所以要将这个 \(1\) 减掉.
(然而可以用 \(s+\lfloor \dfrac{s-1}{9} \rfloor\)\(\lfloor \dfrac{10s}{9} \rfloor\),比我写的强 \(100\) 倍...)
应该没有什么给代码的必要了吧...

CF1296B - Food Buying 题解

标签:ase   代码   math   floor   case   span   ISE   操作   官方   

原文地址:https://www.cnblogs.com/Xray-luogu/p/12268508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!