A

让 \(c\) 保存数组中所有最大的数,如果所有数都相等则 \(-1\)。

B

只需要记录每个序列的最小值和次小值,然后对次小值求前后缀和。

C

枚举最大值 \(mx\),然后遍历 \(i:n\sim 1\)。对于 \(i\),取最大数 \(x\) 满足 \(x\) 未选且 \(i\times x \le mx\)。

证明:假设 \(i\) 原本与 \(x\) 匹配,现在与 \(x1\) 匹配,显然 \(x1<x\),否则 \(i\cdot x1>mx\);\(x\) 与 \(i1\) 匹配,\(i1<i\) 因为更晚选。交换 \(x,x1\) 后总和增加 \((i-i1)(x-x1)>0\),并且此时最大值依旧为 \(mx\)。

D

将每个 \(b_i,x_j,l_i\) 视作一个 “事件” 存到数组里,按坐标排个序,从最右边的位置向左遍历,在数轴上做类似扫描线的操作。(扫描点?)

定义 \(ans_i\) 为第 \(i\) 条线段最远能跳多远,\(p_j\) 为询问 \(x_j\) 的答案,显然 \(p_j=\max(x_j,ans_i|l_i\le x_j\le r_i)\)。

如果当前遇到了一个 \(b_i\),更新 \(ans_i\) 为当前集合中所有 \(ans\) 的最大值(最靠右的),同时把 \(ans_i\) 加入集合中。

如果当前遇到了一个 \(x_j\),更新 \(p_j\) 为当前集合中所有 \(ans\) 的最大值,再和 \(x_j\) 取 \(\min\)。

如果当前遇到了一个 \(l_i\),从集合中删除 \(ans_i\)。

可以用 set 维护。

E

\(dp[i][j]\) 表示前 \(i\) 个数里选的区间长度和为 \(j\) 的最大价值。

\(dp[i][j]=\max(dp[i-1][j],dp[i-l][j-l]+cost(i-l+1,i)|1\le l\le j).\)

\(cost(i-l+1,i)\) 就是区间 \([i-l+1,i]\) 的价值。

观察发现 \(cost(l,r)=|b_l-a_r|+|b_r-a_l|\) 始终等于 \(\max(b_l-a_r+b_r-a_l,-b_l+a_r+b_r-a_l,b_l-a_r-b_r+a_l,-b_l+a_r-b_r+a_l).\)

同时,我们发现 \(dp\) 值之间只有 \(i-j\) 不变才能更新。

我们可以维护四个数组:\(mn1[x],mx1[x],mn2[x],mx2[x]\),分别表示要求 \(i-j=x\) 时,\(-dp[i][j]+b_i+a_i\) 的最小值,\(dp[i][j]+b_i+a_i\) 的最大值,\(-dp[i][j]+b_i-a_i\) 的最小值,\(dp[i][j]+b_i-a_i\) 的最大值。

然后我们求 \(dp[i][j]\) 的时候,就可以根据 \(i-j\) 调用四个数组,根据上面 \(cost\) 的公式加减一下,四种情况都取 \(\max\)。大幅优化。

F

随机推荐

  1. Blazor的技术优点

    Blazor是一种使用.NET和C#构建客户端Web应用程序的新兴技术.它允许开发者在浏览器中直接运行.NET代码,而无需依赖JavaScript.Blazor的技术优点主要表现在以下几个方面: 单一 ...

  2. 永久激活Windows10专业版及其它版本【亲测有效2022-03-16,两种方式】

    前言 小编最近使用公司的电脑,开始出现让你激活的提示,而且每次开机都会弹出来,小编忍住了:但是过不了半个月开始给你在桌面上显示了,一直显示和水印一样.小编忍无可忍,必须找个办法给你消灭掉!!,于是小编 ...

  3. bootstrap : 解决使图片全屏显示有空白边距的问题

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="utf-8 ...

  4. Nginx arm编译安装

    Nginx arm编译安装 背景 计划编译一套产品. 能够比较方便快捷的进行 nginx的交付. 主要思想是源码编译 不仅能够在arm上面运行 也可以在x86上面编译 考虑性能还有一些扩展性. 高效处 ...

  5. 虚拟化平台IO劣化分析

    虚拟化平台IO劣化分析 背景 最近同事让帮忙做几个虚拟机进行性能测试. 本来应该搭建CentOS/Winodws平台进行相关的测试工作. 但是为了环境一致性, 使用了ESXi6.7 进行虚拟化 然后这 ...

  6. [转帖]java -D参数设置系统属性无效问题及解决

    https://www.jb51.net/article/271236.htm   这篇文章主要介绍了java -D参数设置系统属性无效问题及解决方案,具有很好的参考价值,希望对大家有所帮助.如有错误 ...

  7. 【转帖】Linux性能优化(一)——stress压力测试工具

    https://blog.csdn.net/a642960662/category_11641226.html 一.stress简介 1.stress简介 stress是Linux的一个压力测试工具, ...

  8. [转帖]kubernetes Flannel网络剖析

    https://plantegg.github.io/2022/01/19/kubernetes_Flannel%E7%BD%91%E7%BB%9C%E5%89%96%E6%9E%90/ cni(Co ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (186)-- 算法导论14.1 3题

    三.用go语言,写出OS-SELECT的非递归版本. 文心一言: 下面是使用Go语言编写的OS-SELECT的非递归版本: func OS_SELECT(T *Node, k int) *Node { ...

  10. uni-app 计算属性 computed

    功能:=>大于1000用kg表示 小于1000,用g表示 计算属性 计算属性必须是有一个返回值的哦 在html写被计算的值 在computed中去直接调用哈 <view> <t ...