给定 \(m\) 个询问,每个询问是一个区间 \([l,r]\),你需要通过自由地设定每个节点的 \(mid\),设计一种“自适应线段树”,使得在这个线段树上跑这 \(m\) 个区间询问时,需要访问节点的次数最少。

Solution

对于询问 \([ql,qr]\) 和结点 \([l,r]\)

  • 如果 \([ql,qr]\) 与 \([l,r]\) 相交但不包含,贡献为 \(1\)
  • 如果 \([ql,qr]\) 包含 \([l,r]\)
    • 如果 \(l=r\),则贡献 \(1\)
    • 如果 \(l\neq r\),则贡献 \(-1\) (将两个合并为一个,省了一次)

这样一来,我们需要考虑的内容就与树的结构无关,每个结点对应的贡献只和它自身的范围有关

我们可以预处理 \(w[i][j]\) 表示 \([i,j]\) 这个结点产生的贡献,这个贡献可以用前缀和预处理出来

  • 具体地,在 \(i\neq j\) 时,\([i,j]\) 对于任意 \([1\dots j,i \dots n]-[i\dots t,t\dots j]\)都产生了 \(1\) 的贡献,对任意 \([i\dots t,t\dots j]\) 都产生了 \(-1\) 的贡献
  • 而在 \(i=j\) 时,产生 \(1\) 的贡献

设 \(f[i][j]\) 表示处理掉 \([i,j]\) 这段区间的最小答案,那么

\[f[i][j]=\min_k (f[i][k]+f[k+1][j]) + w[i][j]
\]

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1005; int n,m,t1,t2,w[N][N],f[N][N],x[N]; void modify(int i,int j,int k,int l,int v) {
w[i][k]+=v;
w[i][l+1]-=v;
w[j+1][k]-=v;
w[j+1][l+1]+=v;
} signed main() {
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=m;i++) {
cin>>t1>>t2;
modify(1,t2,t1,n,1);
modify(t1,t2,t1,t2,-2);
x[t1]+=2; x[t2+1]-=2;
}
for(int i=1;i<=n;i++) x[i]+=x[i-1];
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1];
}
}
for(int i=1;i<=n;i++) w[i][i]+=x[i], f[i][i]=w[i][i];
for(int l=2;l<=n;l++) {
for(int i=1;i+l-1<=n;i++) {
int j=i+l-1;
f[i][j]=1e14;
for(int k=i;k<j;k++) {
f[i][j]=min(f[i][k]+f[k+1][j],f[i][j]);
}
f[i][j]+=w[i][j];
}
}
cout<<f[1][n];
}

Wannafly Winter Camp 2020 Day 5C Self-Adjusting Segment Tree - 区间dp,线段树的更多相关文章

  1. Wannafly Winter Camp 2020 Day 5I Practice for KD Tree - 二维线段树

    给定一个 \(n \times n\) 矩阵,先进行 \(m_1 \leq 5e4\) 次区间加,再进行 \(m_2 \leq 5e5\) 次询问,每次询问要求输出矩形区间内的最大数.\(n \leq ...

  2. Wannafly Winter Camp 2020 Day 7E 上升下降子序列 - 数学

    神奇公式 #include <bits/stdc++.h> using namespace std; #define int long long int n,mod,c[205][205] ...

  3. Wannafly Winter Camp 2020 Day 7D 方阵的行列式 - 数学

    于是去弄了个板子来 #include <bits/stdc++.h> using namespace std; #define int long long const int mod = ...

  4. Wannafly Winter Camp 2020 Day 7A 序列 - 树状数组

    给定一个全排列,对于它的每一个子序列 \(s[1..p]\),对于每一个 \(i \in [1,p-1]\),给 \(s[i],s[i+1]\) 间的每一个值对应的桶 \(+1\),求最终每个桶的值. ...

  5. Wannafly Winter Camp 2020 Day 6J K重排列 - dp

    求 \(K\) 是多少个 \(n\) 元置换的周期.\(T\leq 100, n\leq 50, K \leq 10^{18}\) Solution 置换可以被试做若干个环组成的有向图,于是考虑 dp ...

  6. Wannafly Winter Camp 2020 Day 6I 变大! - dp

    给定一个序列,可以执行 \(k\) 次操作,每次选择连续的三个位置,将他们都变成他们的最大值,最大化 \(\sum a_i\) 需要对每一个 \(k=i\) 输出答案 \(n \leq 50, a_i ...

  7. Wannafly Winter Camp 2020 Day 6H 异或询问 - 二分

    给定一个长 \(n\) 的序列 \(a_1,\dots,a_n\),定义 \(f(x)\) 为有多少个 \(a_i \leq x\) 有 \(q\) 次询问,每次给定 \(l,r,x\),求 \(\s ...

  8. Wannafly Winter Camp 2020 Day 6G 单调栈 - 贪心

    对于排列 \(p\),它的单调栈 \(f\) 定义为,\(f_i\) 是以 \(p_i\) 结尾的最长上升子序列的长度 先给定 \(f\) 中一些位置的值,求字典序最小的 \(p\) 使得它满足这些值 ...

  9. Wannafly Winter Camp 2020 Day 6D 递增递增 - dp,组合数学

    给定两个常为 \(n\) 的序列 \(l_i,r_i\),问夹在它们之间 ( \(\forall i, l_i \leq a_i \leq r_i\) ) 的不降序列的元素总和. Solution 先 ...

随机推荐

  1. FMPEG结构体分析:AVStream

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...

  2. 全卷积网络FCN

    全卷积网络FCN fcn是深度学习用于图像分割的鼻祖.后续的很多网络结构都是在此基础上演进而来. 图像分割即像素级别的分类. 语义分割的基本框架: 前端fcn(以及在此基础上的segnet,decon ...

  3. MySQL存储引擎——MyISAM与InnoDB区别

    注:本文来自:https://blog.csdn.net/xifeijian/article/details/20316775 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型, ...

  4. TestStand 基础知识[6]--Build-in Step Types (1)

    Step Types 有TestStand自带的,也有自定义的.本文先介绍自带的Step Types. 首先什么是Step Types ? 翻译过来就是步骤的类型,类似数据类型--数据有整型,字符串, ...

  5. 5年从DBA到运维架构总监 — 做对了什么

    本文来自宝宝树运维总监刘秋岐的分享.随着MySQL的不断成熟,逐渐被用于更多大规模的网站和应用了,比如说当前最火的Facebook.淘宝.阿里.兰亭集势.宝宝树这样的大型的网站都在使用MySQL数据库 ...

  6. qt creator源码全方面分析(2-10-2)

    目录 Creating Your First Plugin 创建一个插件项目 构建并运行插件 文件结构 qmake项目 插件元数据模板 插件类 头文件 源文件 Creating Your First ...

  7. 性能优化-CPU占用过高问题排查

    1. 性能优化是什么? 1.1 性能优化就是发挥机器本来的性能 1.2 性能瓶颈在哪里,木桶效应.   CPU占用过高 1.现象重现 CPU占用过高一般情况是代码中出现了循环调用,最容易出现的情况有几 ...

  8. 数据算法 --hadoop/spark数据处理技巧 --(9.基于内容的电影推荐 10. 使用马尔科夫模型的智能邮件营销)

    九.基于内容的电影推荐 在基于内容的推荐系统中,我们得到的关于内容的信息越多,算法就会越复杂(设计的变量更多),不过推荐也会更准确,更合理. 本次基于评分,提供一个3阶段的MR解决方案来实现电影推荐. ...

  9. Tomcat 修改日志输出配置 定期删除日志

    tomcat的下的日志catalina.out 和 qc.log疯狂增长,以下是解决办法 我生产环境tomcat版本 Server version: Apache Tomcat/7.0.35 Serv ...

  10. zabbix-agentd配置文件详解

    agent 端配置文件路径 :/etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid #<===指定pi ...