#L3029. 「ROIR 2018 Day2」大数据处理

    ID: 4122 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划记忆化搜索数据结构贪心树结构DFS序列树的分治前缀和ST表

「ROIR 2018 Day2」大数据处理

题目描述

译自 ROI 2018 Regional. Day2 T4. Обработка больших данных

某实验室正在研发一种能处理大规模数据的新型超级计算机。

这台超算的内存包含 2k2^k 个存储单元,依次编号为 02k10\ldots 2^k-1。用内存段 [L,R][L,R] 表示编号 L\ge LR\le R 的所有存储单元,该内存段的长度为 RL+1R-L+1

定义:如果内存段 [L,R][L,R] 的长度是 22 的整数次幂(不妨假设是 2i2^i),且 LL2i2^i 的整数倍,那么这个内存段是「正确的内存段」。

k=3k=3,则正确的内存段为 [0,7][0,7], [0,3][0,3], [4,7][4,7], [0,1][0,1], [2,3][2,3], [4,5][4,5], [6,7][6,7], [0,0][0,0], [1,1][1,1], [2,2][2,2], [3,3][3,3], [4,4][4,4], [5,5][5,5], [6,6][6,6][7,7][7,7]

现在,每个存储单元所存储的值均为 00。你需要给每个存储单元赋值。简单起见,我们用游程编码的形式给出每个单元上的值。开头的 c1c_1 个单元中存储的值为 v1v_1,接下来 c2c_2 个单元中存储的值为 v2v_2,以此类推,最后的 cnc_n 个单元中存储的值为 vnv_n1vim1\le v_i\le m

举个例子,如果 k=3k = 3, n=3n = 3, m=2m = 2, c=1,2,5c = {1, 2, 5}, v=1,2,1v = {1, 2, 1},那么内存将被赋值为 [1,2,2,1,1,1,1,1][1, 2, 2, 1, 1, 1, 1, 1]

你只有一种方法给单元赋值:STORE([l,r],x)\mathtt{STORE}([l,r],x)。该函数表示将内存段 [l,r][l,r] 中所有单元全部赋值为 xx。注意,[l,r][l,r] 必须是正确的内存段。

试求至少需要多少次操作才能达成要求。


输入格式

第一行三个整数 kk, nn, mm。 接下来的 nn 行,每行两个整数 cic_i, viv_i

输出格式

输出一行一个整数,表示至少的次数。


样例

输入

3 3 2
1 1
2 2
5 1

输出

3

目标:[1,2,2,1,1,1,1,1][1, 2, 2, 1, 1, 1, 1, 1]

STORE([0,7],1)\mathtt{STORE}([0, 7], 1),得到 [1,1,1,1,1,1,1,1][1, 1, 1, 1, 1, 1, 1, 1]

STORE([1,1],2)\mathtt{STORE}([1, 1], 2),得到 [1,2,1,1,1,1,1,1][1, 2, 1, 1, 1, 1, 1, 1]

STORE([2,2],2)\mathtt{STORE}([2, 2], 2),得到 [1,2,2,1,1,1,1,1][1, 2, 2, 1, 1, 1, 1, 1]

数据范围与提示

0k300 \le k \le 301n1051 \le n \le 10^51m1091 \le m \le 10^9

子任务编号 分值 kk\le nn\le mm\le
1 15 3 8
2 19 10
3 10
4 10 50
5 15 19
6 30