最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 序列划分

C++ 少儿编程 1186浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

给定正整数 $m$ 以及长度为 $n$ 的序列对$(a_i,b_i)$,你需要将它分为连续的若干段,满足以下2个条件:

① 若$i<j$且$i$与$j$不在一段中,则$b_i>a_j$。

② 每一段的$a$的最大值之和$≤m$。

在此基础上,你需要最小化每一段的$b$的和的最大值。

【输入】

第一行两个正整数$n,m$,接下来$n$ 行每行两个正整数$a_i,b_i$。

【输出】

一行一个整数表示答案。

【输入样例】

4 6 
4 3 
3 5 
2 5 
2 4

【输出样例】

9

【提示】

【数据规模】

数据编号 $n≤$ 特殊性质1 特殊性质2
$1$ $1000$
$2$
$3$ $100000$ $a_i$在$[1,10^9]$内均匀随机 $min(b_i)>max(a_i)$
$4$ $a[i]>a[i+1]$
$5$
$6$ $a_i$在$[1,10^9]$内均匀随机 $b_i$在$[1,10^9]$内均匀随机
$7$
$8$ $a[i]>a[i+1]$
$9$
$10$

对于100%的数据,$n≤100000,m≤10^{12},1≤a_i,b_i≤2×10^9$。

您必须 登录 才能发表评论!