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. C++初始化列表时,形参和实参名可以一样,编译器可以识别

    在这里初始化列表直接用age(age)即可,用this->age(age)反而会出错,C++不允许在成员初始化列表中使用this关键字来初始化类成员 class Person { public: ...

  2. 【MCU】单片机如何检测市电通断?(应用甚广~)

    [来源]https://mp.weixin.qq.com/s/TQKtEbxS8WSo3D1MecdMIw

  3. Laravel - Eloquent 模型查询

    Laravel 的 Eloquent ORM 提供了漂亮.简洁的 ActiveRecord 实现来和数据库进行交互.每个数据库表都有一个对应的「模型」可用来跟数据表进行交互.你可以通过模型查找数据表内 ...

  4. 【Tomcat 组成与工作原理】

    Tomcat组成与工作原理 Tomcat 是什么 开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 ...

  5. [转帖]在Linux中切换cmake版本

    在Linux中切换cmake版本https://blog.whsir.com/post-6804.html   在Linux系统中,有时需要使用cmake进行程序编译,由于不同的Linux系统导致安装 ...

  6. [转帖]Linux搭建Nexus仓库+高可用方案

    https://www.cnblogs.com/yangjianan/p/9090348.html Linux搭建nexus仓库 1.安装jdk 1.1 获取安装包,解压到指定目录: 1 tar xf ...

  7. [转帖]UseG1GC垃圾回收技术解析

    https://www.cnblogs.com/yuanzipeng/p/13374690.html 介绍 G1 GC,全称Garbage-First Garbage Collector,通过-XX: ...

  8. 根目录被赋予777 -R权限后的处理过程

    解决某研发手残导致的系统宕机问题的处理过程 背景 2022.8.8 公司一台服务器出现了宕机的现象: 所有的人都无法远程, 都提示密码错误. 但是网络还是通的. 2022.8.12 出差前一天去了一趟 ...

  9. RedisSyncer同步引擎的设计与实现

    RedisSyncer一款通过replication协议模拟slave来获取源Redis节点数据并写入目标Redis从而实现数据同步的Redis同步中间件. 该项目主要包括以下子项目: redis 同 ...

  10. 数据仓库(4)基于维度建模的数仓KimBall架构

      基于维度建模的KimBall架构,将数据仓库划分为4个不同的部分.分别是操作型源系统.ETL系统.数据展现和商业智能应用,如下图.   操作型源系统,指的就是面向用户的各类系统,如app.网站.E ...