次大值
思路
发现性质,对于一个数
\[a[i]\%a[j]\le a[i] \]当他取得最大值时\(a[i]<a[j]\)
于是对于前&n-1&大的数,他的贡献值就是他本身,所以我们只需要保存第\(n-1\),\(n-2\)大的数就可以。
但是此时要注意第\(n\)大的数的贡献值没有计算,由于\(a[n]\%a[n-2]<a[n-2]\),所以如果他要对答案有贡献,当且仅当
因此我们只需要保存前\(3\)大的数即可。
注意,如果去重后只有\(2\)个数,那么答案就是\(a[2]\%a[1]\)。如果只有\(1\)个数,那么输出\(-1\)。
\(code\)
我还没写正解。QAQ
倒水
思路
如果一堆瓶子最后可以合为一个,那么这堆瓶子的个数就一定是\(2^i\)。
根据谈心原则如果想让当前瓶子数减少\(1\),那么只需要加上瓶子数的\(lowbit\)。即
注意,每次操作完后总瓶子数不一定减1。