zoukankan      html  css  js  c++  java
  • [NOI2011]Noi嘉年华

    题解:

    思路挺水的一道题

    首先肯定将时间离散化排序后考虑

    然后预处理出ff[i][j]表示从i-j时刻,被包含了多少值

    令f[i][j]表示进行到i时刻,A中的个数是j,B中的个数的最大值

    转移也挺显然,就是枚举决策 时间n^3

    这样第一问就解决了

    考虑第二问

    会发现就等价于求min(x+y+ff[i][j],f[i][x]+g[j][y]) (其中i<begin,j>end) 其实ff[i][j]也可以加到后面这项,但是因为他们是对称的所以已经算过了

    这样暴力求解是n^4的

    考虑如何优化

    1.n^3logn,这个比较显然

    当x确定时,显然x+y+ff[i][j]随y+而+,而f[i][x]+g[j][y]随y+而-

    那么二分y找到两个单调函数的交点就可以了

    2.n^3(是看了题解才知道的。。发现真是很智障。。2d2d的优化见得太少了)

    其实上面这个已经很接近了,只是把结论强化一下

    我们假设左边为x时右边的最优解为y,那么当左边为x+1时,y一定是不增的

    这样显然是n^3的

    意识流证明的话就是既然你min(x+y+ff[i][j],f[i][x]+g[j][y])>=min(x+y+1+ff[i][j],f[i][x]+g[j][y+1])

                         那么当x+1时,min(x+y+1+ff[i][j],f[i][x+1]+g[j][y])>=min(x+y+2+ff[i][j],f[i][x+1]+g[j][y+1])

                         因为这时的min是等于后面这一项的

  • 相关阅读:
    前端提示“页面正在载入”的功能实现
    JSON那些事
    如何让nodejs同步操作
    nodejs的一些局限
    《javascript高级程序设计》读书笔记——作用域
    svn教程
    从雷军谈小米中的一些思考
    云Vps安全设置
    不同服务器数据库之间的数据操作
    C#语言的Excel文件导入导出
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8696727.html
Copyright © 2011-2022 走看看