3098: 线段树(segment)

内存限制:512 MB 时间限制:2.000 S
评测方式:特殊裁判 命题人:
提交:0 解决:

题目描述

线段树是一种快速处理区间问题的数据结构。
通常,总区间为 1-n的线段树有 2n-1个结点。 根结点表示区间[1,n]。
如果一个结点表示区间[l,r],如果 l<r,那么它的左右儿子分别表示区间
[l,(l+r)/2]和区间[(l+r)/2+1,r];如果 l=r,那么它是一个叶子结点。
一个总区间为 1-6 的线段树如下图所示。

 

 

 

蛤布斯需要一个线段树来帮它处理问题,由于蛤布斯比较强,在它的
线段树中,根结点仍然表示[1,n],但[l,r]的左右儿子分别表示[l,k]和[k+1,r],
这里的 k 可以在[l,r)中任取。
例如,下图是蛤布斯的一个总区间为 1-6 的线段树。

 

当我们在线段树中访问一个区间[i,j]时,我们先访问根结点。记我们
当前访问的结点代表的区间为[l,r],如果 i<=l<=r<=j,那么结束对这个结点
的访问;否则,如果 i<=k,访问左儿子,如果 j>k,访问右儿子,然后结
束对这个结点的访问。
然而,一只鲲鹏偷偷修改了蛤布斯的代码,将上文中蓝色部分对应的
代码删掉了。这样,只有在当前结点是叶子结点时才会直接结束访问,否
则一定会向下访问。
例如,我们在上图的线段树中访问区间[2,5],红色的结点就是被访问
过的。
蛤布斯将对 m 个区间[ai,bi]进行访问,你需要帮他为每个结点选取合
适的 k,使得每次访问的结点个数之和最小。

输入

第一行两个整数 n,m,接下来 m 行每行两个整数 ai,bi。

输出

一行一个整数表示答案。

样例输入 复制

6 6
1 4
2 6
3 4
3 5
2 3
5 6

样例输出 复制

40

提示

【数据范围】
对于 20%的数据,n<=50,m<=100。
对于 40%的数据,n<=200。
对于 70%的数据,n<=1000。
对于 100%的数据,n<=5000,m<=100000。