(鸽王回来了...
题目链接
http://zhengruioi.com/contest/684/problem/1492
题目解法
首先观察到 3k2-3k+1=3k(k-1)+1, 由于k-1和k中必有一个为偶数,3k(k-1)为6的倍数。因此这个式子可以写成6x+1,其中x为非负整数。
接下来我们注意到在大佬看来非常多余但在我看来非常有用的hint。我们发现如果答案为1,2,3,4,5,6,7,8,对应的n对6取模应该是1,2,3,4,5,0,1,2。因此,如果n对6取模不是1或2,答案就已经是唯一的了。如果对6取模是1或2,显然我们只需要检查1或者2是不是可行的解,如果不是那么答案就是7或者8.
检查答案是否可以是1
3k(k-1)+1=n -> k(k-1)=(n-1)/3
显然我们只需要将sqrt((n-1)/3)作为k-1带入检查就行了
检查答案是否可以是2
法1:先枚举第一个k,然后对于剩下的部分用上述的方法检查是否可以表示为3k2-3k+1的形式
法2:two pointers 从两边逼近
显然两种方法都是O(sqrt(n))的
总的复杂度是O(T·sqrt(n))
#0022. 「ZROI」2020提高组十连测d1t1 stone
原文:https://www.cnblogs.com/myrcella/p/13630099.html