C. 徐老师的羊腿切割机

    传统题 2000ms 256MiB

徐老师的羊腿切割机

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

徐老师为了切割羊腿,特意买了一台很大的羊腿切割机!

这台切割机有一个工作台,现在徐老师已经把一堆羊腿放在工作台上了

工作台是个二维平面,但是徐老师会把所有的羊腿放置到与工作台下边缘平行

工作台的两侧边缘上分别标注了坐标点 1,2,31,2,3 \dots

现在徐老师将 nn 只羊腿放置在了工作台上,第 ii 只羊腿会放在横向第 ii 行上,并且两端刚好对齐工作台的坐标点 x,y(x<y)x,y(x < y)

例如有 33 只羊腿,分别对齐的坐标点为:[1,3],[2,4],[1,4][1,3],[2,4],[1,4]

如下图用 - 表示羊腿,这里是上述 33 只羊腿的摆放形状

1 ----- 
2   -----
3 -------
  1 2 3 4 5

每次切割时徐老师会设定一个坐标点 aa,切割机将从上往下把所有经过的羊腿全部切开

例如上述例子,设定坐标点 33 进行切割,显然这次切割对于三个羊腿将会造成:

  1. 刚好经过 11 号羊腿的右端点,所以不会切割 11 号羊腿
  2. 会将 22 号羊腿 [2,4][2,4] 切割成 [2,3],[3,4][2,3],[3,4] 两块
  3. 33 号羊腿 [1,4][1,4] 切割成 [1,3],[3,4][1,3],[3,4] 两块

那么这一次切割后徐老师将拥有 55 块羊腿

现在徐老师将会进行 mm 次切割,他想获得尽可能多的块数,该如何切割?最多能切出几块羊腿?

P.S. 本题的输入输出使用 scanf,printfscanf,printf 会导致超时,请使用 cin,coutcin,cout,并取消同步流,格式如下:

int main(){
    freopen("slicing.in", "r", stdin);
    freopen("slicing.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    输入使用 cin
    cin >> T;

    ......
    输出使用 cout,换行使用 "\n"
    cout << ans << "\n";
}

输入格式

本题采用多组测试数据 第一行一个整数 TT 表示测试数据数量,接下来对于每组测试数据有 第一行包含两个整数 n,mn,m 表示羊腿数量和切割次数 接下来 nn 行每行两个整数 xi,yix_i,y_i 表示第 ii 只羊腿的放置位置

输出格式

对于每组测试数据,输出一行形为 Case #A: B 的答案 其中 AA 表示测试数据编号(从 11 开始), BB 表示徐老师能获得的最多羊腿块数

数据范围

测试点编号 T,n,mT,n,m xi,yix_i,y_i
131 \sim 3 1n,m101 \leq n,m \leq 10 1xi<yi501 \leq x_i < y_i \leq 50
474 \sim 7 1n,m1031 \leq n,m \leq 10^3 1xi<yi1051 \leq x_i < y_i \leq 10^5
8108 \sim 10 1n105,1m10181 \leq n \leq 10^5, 1 \leq m \leq 10^{18} 1xi<yi10121 \leq x_i < y_i \leq 10^{12}

对于所有数据满足:1T101 \leq T \leq 10

样例输入

2
3 1
1 3
2 4
1 4
3 3
1 3
2 4
1 4

样例输出

Case #1: 5
Case #2: 7

样例解释

对于第二组测试数据,徐老师可以依次切割坐标 2,3,42,3,4 可以获得最多的羊腿数量

2025CSP-S暑假模拟赛一

未参加
状态
已结束
规则
IOI
题目
3
开始于
2025-7-31 21:00
结束于
2025-8-10 21:00
持续时间
240 小时
主持人
参赛人数
29