题意
对于$t(1\leq t\leq 100)$个测试点,给两个数$a$和$b$,作如下操作:
第一次挑一个数使其加$1$,第二次挑一个数使其加$2$,以此类推,最后两个数相等,问最小操作数。
分析
题目所述意思即为挑选最小的$n$,满足以下等式$(\pm$表示可取正号可取负号$)$
我们令$\left|a-b\right|$为$x$,我们先找到最小的$k$满足$\frac{k*(k+1)}{2}\geq x$,即$(1)$式中全为加号$($如果全为加号都不满足,其中一些变为减号肯定更不满足$)$。我们有一个以下式子
其中$y$为超过的部分。
$1.$如果$y$是偶数,我们已知$y<k$,否则不满足上述$k$最小。那么我们将$\frac{y}{2}$的符号变为负号即可满足$(1)$式,那么答案就是$k$。
$2.$如果$y$是奇数,那么该式子将一些正号变为负号也肯定不满足(改变后式子的值变化为偶数),我们往$(2)$式左右都加上$k+1$。
- 如果$k+1$是偶数,那么$y+k+1$仍然为奇数,同上,仍不满足,我们需两边再加上$k+2$,$y+2*k+1$为偶数,我们将$\frac{y+1}{2}$和$k$的符号变为负号即可满足$(1)$式,$(y+1=2*k$显然不满足条件$)$,那么答案就是$k+2$。
- 如果$k+1$是奇数,那么$y+k+1$为偶数,我们将$\frac{y+k+1}{2}(\frac{y+k+1}{2}<k+1)$的符号变为负号即可满足$(1)$式,那么答案就是$k+1$
1 |
|
我现在连$Div2$的$B$都能卡一小时吗,我是真的菜