传送门


我们相当于要求出\(f_i = \max\limits_{j=1}^{n} (a_j + \sqrt{|i-j|})\)。这个绝对值太烦人了,考虑对于\(i>j\)和\(i<j\)分开做。

当\(i>j\)时,\(f_i = \max\limits_{j=1}^{i-1}(a_j + \sqrt{i-j})\)。注意到这是一个典型的\(f_i = \max\limits_{j=1}^{i-1}f_j + w(i,j)\)的形式,考虑决策单调性。不难证明\(\sqrt{x + 1} - \sqrt{x} < \sqrt{x} - \sqrt{x - 1}\),故对于决策点\(p<q , \sqrt{i+1-p} - \sqrt{i-p} < \sqrt{i+1-q} - \sqrt{i-q}\),也就是说\(w(i+1,p) - w(i,p) < w(i+1,q) - w(i,q)\),满足四边形不等式。

那么可以按照传统的方法,在队列中维护决策三元组\((x,l,r)\)表示当\(i \in [l,r]\)时,\(f_i = f_x + \sqrt{i-x}\),每加入一个新的决策时在队尾弹出被当前决策代替的决策,然后在最后一个有效决策的范围上二分得到当前决策的范围。当有询问时直接拿出队头的答案即可。

代码

最新文章

  1. PHP相关代码
  2. STL容器适配器 stack, queue
  3. Transistor 晶体管 场效应 双极型 达林顿 CMOS PMOS BJT FET
  4. Asp.net设计模式笔记之二:应用程序分离与关注点分离
  5. Python快速教程
  6. 设置 MyEclipse 默认打开文件方式
  7. 本地连接图标消失;修改地址IP地址
  8. Com和DCOM
  9. uva-10487 - Closest Sums
  10. Csharp多态的实现(抽象类)
  11. C#处理JSON 数据
  12. vue2.0+element+node+webpack搭建的一个简单的后台管理界面
  13. IE不兼容ES6箭头函数的解决方法(在浏览器中使用)
  14. Codeforces 126B. Password (KMP)
  15. 使用Python内置浏览器缓存cookies并做更新
  16. c# ref和out参数
  17. Linux移植之内核启动过程start_kernel函数简析
  18. python-观察者模式
  19. Bootstrap-CL:面板
  20. 怎样安装Scrapy

热门文章

  1. (10)Go结构体struct
  2. mysql avg()函数,获取字段的平均值
  3. element ui 合计/table show-summary
  4. Clion下同时编写多个main函数
  5. 理解Web路由(浅谈前后端路由与前后端渲染)
  6. 腾讯云手动搭建nginx+php-fpm并自启动
  7. [RoarCTF]Easy Calc
  8. jQuery跳出each循环:JS报错:illegal break statement
  9. vue+websocket demo 实例
  10. Netty 多客户端连接与通信