Information
- ID
- 1595
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- (None)
- # Submissions
- 27
- Accepted
- 5
- Uploaded By
不妨设 a 单调递增(无重复),显然如果 n≤3,答案就是 0。
显然答案 k 具有可二分性。也就是说,当 k<k0 时一定不存在合法的 x,y,z,当 k≥k0 时一定存在,k0 就是答案。
因此二分答案,只需要验证答案 k 是否存在合法的 x,y,z。
为了覆盖到 a1,且 x 尽量往大取(这样可以覆盖更多的 ai),我们令 x=a1+k。接下来一段区间的 ai 会被 [x−k,x+k] 覆盖,我们跳过这段区间,找到下一个未被覆盖的 ai。类似于刚刚的思路,我们令 y=ai+k,再找到下一个未被覆盖的 aj,令 z=aj+k。如果此时所有 ai 都被覆盖了,那么就合法,否则不合法。
时间复杂度 O(nlogw),其中 w 为值域。
By signing up a Hydro universal account, you can submit code and join discussions in all online judging services provided by us.