2 条题解
-
1baige123 LV 10 @ 2014-09-03 22:40:57
要在sqrt(n)的时间内解决这个问题,我们需要较强的数学分析能力。让我们把实数解分成三个部分。设使Δ>=0的(b,c)有ans1对,使sqrt(b^2-c)为整数的(b,c)有ans2对,最后能够得到的整数解有ans3个,那么最终的答案ans = ans1 * 2 - ans2 * 2 + ans3。
我们分情况讨论它们的求法。
1、ans1, 我们只需使b^2-c >= 0即可。枚举b,当b^2<m时,ans1 += b^2, 当b^2 >m, ans1 += m
这样可以sqrt(m)的时间内求出ans1。
2、ans2,设b^2-c = x^2,则(b - x)*(b + x) = c,令b-x = x1, b + x = x2
有2 <= x1 + x2 <= 2*n, x1*x2 <= m, 我们枚举x1,则x2 <= min(m / x1, 2*n - x1)。统计[x1,x2]区间内与x1同奇偶的数即可。注意x1 <= x2 <= sqrt(m),所以也在根号的时间内解决了。
3、ans3,这个比较难想到,我们将能够得到的整数解分成两部分,一部分是奇数,一部分是偶数。
考虑这个式子:-b - sqrt(b^2-c),
当b^2 - (b - 1)^2 = 2b - 1 <= m时,能取到-2b+1的奇数整数解。
当b^2 - (b-2)^2 = 4b - 4 <= m时,能取到-2b+2的偶数整数解。
可以证明,这样取到的整数就等价于由方程能够解出的整数。所以可以O(1)的计算出来。至此,这个问题得到解决。对于ans3的计算感觉更多依赖于猜想,在考试中打表观察规律即可比较快的发现。
从数学慢慢推广 从数据范围看出简单算法 这样才能在OI届大展风采~
PS 目测此题好难 但是比赛的时候30分非常简单的 -
-12012-11-02 15:48:32@
foo.pas(10,14) Warning: Variable "ans" does not seem to be initialized
#01: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#02: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#03: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#04: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#05: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#06: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#07: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#08: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#09: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)
#10: ---|---|---|---|---|---|---|---|-
Accepted (0ms, 580KB)---|---|---|---|---|---|---|---|-
Accepted / 100 / 0ms / 580KB在我校RGB123RGB(洪*蓝)的带领下终于会了此题并且AC了。
RBG123RBG说这是一道难度为2的题目……瞎爆狗眼,膜拜之膜拜之
- 1
信息
- ID
- 1759
- 难度
- 8
- 分类
- (无)
- 标签
- (无)
- 递交数
- 94
- 已通过
- 8
- 通过率
- 9%
- 被复制
- 2
- 上传者