洛谷题目页面传送门 & AtC 题目页面传送门
题意见洛谷里的翻译,节点 (i) 权值为 (a_i)。
这是个 AGC 的 F,挺吓人的。但是仔细看发现跟 P4437 差不多的,所以这是一个 AGC F 中的水题。(本来是不值得我发题解的,但是由于是 AGC 的 F 就随便写写吧……)
假设有 (m) 个 (1),这个 (m) 显然是固定的。然后我们设 (m) 个 (1) 的位置为 (p_{1sim m}),这个 (p) 定下来整个序列显然也定下来了。对于 (p) 的一个取值,答案显然为 (sumlimits_{i=1}^m(n-p_i-(m-i)))。随便推一下发现等于 (m(n-m)+dfrac{m(m+1)}2-sumlimits_{i=1}^mp_i)。于是题目转化为最大化 (ans=sumlimits_{i=1}^mp_i)。
仿照 P4437 的推(什么是套路?),我们考虑当前能选的节点集合中的任意两个点 (x,y),若 (x) 放最前面,尝试将 (y) 换到最前面来变得更优。我们统一使用「将 (y) 放到最前面,将 (y) 前面依赖于或等于 (x) 的全部顺移一位」这种方法来移动。
- (a_x=a_y=0):显然所有 (1) 都往后移了,(ans) 肯定增大,sqrt{};
- (a_x=a_y=1):稍有一丝复杂,注意到所有人移动距离之和等于 (0),(y) 的移动占据了所有负贡献,而其他的又不全是 (1),所以最终对 (ans) 变化量的总贡献是负的, imes;
- (a_x=0,a_y=1):跟 (2) 类似, imes;
- (a_x=1,a_y=0):跟 (1) 类似,sqrt{};
综合一下就是 sqrt{} 当且仅当 (a_y=0)。合理性也挺好理解的,就跟 P4437 差不多嘛。然后如果没有 (0) 的话,那显然就随便选了……于是与爸爸合并。然后考虑合并以后该如何比较。不难发现 (sz_id_i) 守恒,然后 (ans) 的贡献总值是 (sumlimits_i cnt_id_i)。(cnt_id_i=dfrac{cnt_i}{sz_i}sz_id_i),于是找 (dfrac{cnt_i}{sz_i}) 当作最小的放在 (y) 处与唯一的负距离贡献相乘即可。
UPD:然后发现,(sumlimits_{i=1}^mp_i=sumlimits_{i=1}^nia'_i),那不就严格弱于 P4437 了吗?那我前面分析了那么多分析了个寂寞啊?
把 P4437 代码改几个字交上去就 A 了。