zoukankan      html  css  js  c++  java
  • CF1461F

    先大力分类讨论:

    • ( exttt +),此时如果有 ( exttt-) 它也没有用,被 ( exttt+) 代替会更优。
      • ( exttt*),这是接下来讲的重点;
      • 无,那就全部 ( exttt+)
    • 无,此时有 ( exttt-) 的话就有用了。
      • ( exttt-)
        • ( exttt*),这个还稍微有点东西,但也非常简单。如果没有 (0) 那显然全 ( exttt*),否则答案下限是 (0),然后考虑有 ( exttt-) 的情况。那就分成至少两段,第一段的贡献是正的,后面都是负的。那么显然找到第一个 (0) 前面都是 ( exttt*),然后 ( exttt-) 一下后面都是 ( exttt*) 是最优的,因为最大化了第一段也最小化了后面;
        • 无,那就全 ( exttt-)
      • 无,那就全 ( exttt*)

    下面重点讨论上述重点。

    我们显然有一个平方的 DP,就是考虑对这个 ( exttt*) 段 DP,每次用前缀积 (mathrm O(n)) 转移。然后也一脸优化不了。于是我们来找性质。

    显然所有 (0) 两边都必须是 ( exttt+),如果是 ( exttt*) 的话改成 ( exttt+) 显然更优。也就是 (0) 们把整个数列分成了独立的好几段,考虑对每段分别考虑。

    然后如果全部 (>1) 的话,显然是全 ( exttt*) 最好。但关键有 (1) 存在,可以弱化成这样一个结论:相邻两个 (>1) 之间必须是 ( exttt*),也容易反证。于是我们把它们缩起来。

    那么 (1) 可以看作浓缩饼干之间的桥梁。如果想要把两边断开的话,那就全 ( exttt+) 最好,否则只能全 ( exttt*) 才能连上。于是就变成了对 (1) 段们的决策问题,似乎还是需要类似一开始的平方 DP。

    但这时候有个好性质:一旦如果全 ( exttt*) 能够非常大的话(我取的是 (10^9)),那就所有桥梁必须连起来,否则单凭加法的力量是完全被降维打击的。只有两端的 (1) 段能够 ( exttt+)。然后又因为每段浓缩饼干都 (geq2),所以这时候段数是 (log) 级的,那怎么乱搞都可以了吧。我们依然考虑上述 DP,前缀积优化转移,记录路径,总复杂度 (mathrm O!left(nlog^2 ight))

    code

    珍爱生命,远离抄袭!
  • 相关阅读:
    使用rem来开发你的移动端网站
    在网页布局中合理使用inline formating context(IFC)
    构建OLAP CDP平台 Maven父子项目
    2014世界杯决赛观后感
    2013岁末总结
    11月11日上班杂谈
    这一年
    湖南联通发福利了C#为你月赚150M流量回家过年不再愁
    C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码)
    C# 实现对接电信交费易自动缴费
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-cf1461f.html
Copyright © 2011-2022 走看看