CF155B.Combination

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Combination

题目描述

Ilya 玩一种卡牌游戏,规则如下。

玩家拥有若干张卡牌,每张卡牌的顶部和底部分别写有两个非负整数。每轮游戏开始时,玩家选择自己的一张卡牌来出牌。如果一张卡牌的顶部数字为 aia_{i},底部数字为 bib_{i},那么出这张牌时,玩家可以获得 aia_{i} 分,并且可以额外出 bib_{i} 张牌。打出的卡牌会被弃掉。

更正式地说:设有一个可以出牌的计数器。每轮开始计数器为 1。每出一张卡,计数器会因打出一张牌减 1,并根据该牌底部数字 bib_{i} 增加 bib_{i},然后该牌被移除。如果此后计数器不为零,玩家可以继续从剩下的牌中选择一张牌打出。回合在计数器为零或无牌可选时结束。

当然,Ilya 想获得尽可能多的分数。已知他拥有的所有牌,请你计算出他一轮最多能得到多少分。

输入格式

第一行包含一个整数 nn1n10001 \leq n \leq 1000),表示 Ilya 拥有的牌数。

接下来 nn 行,每行两个用空格分隔的非负整数,分别表示第 ii 张牌顶部的数字 aia_{i} 和底部的数字 bib_{i}0ai,bi1040 \leq a_{i},b_{i} \leq 10^{4})。

输出格式

输出一个整数,表示按照上述规则一轮游戏最多可以获得的分数。

说明/提示

在第一个样例中,两张牌都不能带来额外的出牌次数,因此应该选择分值较高的那一张作为出牌。

在第二个样例中,应首先打第三张牌,即便它不带来分数,但是它可以让你再出两张剩下的牌。

由 ChatGPT 5 翻译

样例

2
1 0
2 0
2
3
1 0
2 0
0 2
3

在线编程 IDE

建议全屏模式获得最佳体验