前言
题解
最近空闲的时间多了一些,补一下之前的题解
E. 小红的矩阵划分
思路:三分
这个n为偶数,其实很值得玩味
我的猜测结论是
这样的话
最终为
这是一个奇怪的函数,要么其满足单调性,要么满足凸函数性质(赌)
那就引入三分的解法(单调性是特殊的凸函数)
n, x, y = list(map(int, input().split()))
# 评估函数
def evaulate(m):
left = n * n - m * 4
return left // 3 * x + m * y
# 三分板子
l, r = 0, (n//2) ** 2
while r - l >= 3:
d = (r - l) // 3
m1 = l + d
m2 = r - d
c1 = evaulate(m1)
c2 = evaulate(m2)
if c1 <= c2:
l = m1
else:
r = m2
res = 0
# 扩大范围
for i in range(max(0, l - 10), min(l + 10, (n // 2) ** 2) + 1):
res = max(res, evaulate(i))
print (res)