Rating 1100
2138A 蛋糕分配
来源:Codeforces Round 1048 (Div. 1)-A. Cake Assignment
Tags: 位掩码 构造算法 贪心
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
Chocola 和 Vanilla 喜欢蛋糕。今天,一家蛋糕店的经理给了她们总共 个蛋糕。蛋糕被平均分配,因此她们最初每人收到了 个蛋糕。
然而,Chocola 和 Vanilla 现在想要重新分配蛋糕,使得 Chocola 最终恰好拥有 个蛋糕,而 Vanilla 获得剩下的 个蛋糕。
在一步操作中,她们可以恰好执行以下两种操作之一:
- Chocola 将她的一半蛋糕给 Vanilla。此操作仅在 Chocola 当前拥有偶数个蛋糕时允许执行。
- Vanilla 将她的一半蛋糕给 Chocola。此操作仅在 Vanilla 当前拥有偶数个蛋糕时允许执行。
你的任务是确定达到目标分配所需的最少步数,并输出达到该最小值的任何有效操作序列。
可以证明,在给定的约束条件下,总是存在一个有效的解决方案,并且所需的最少步数最多为 。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 ()。接下来是测试用例的描述。
每个测试用例的第一行包含两个整数 和 (, ) —— 每个人最初收到了 个蛋糕, 是重新分配后 Chocola 应该拥有的蛋糕数量。
输出
对于每个测试用例,输出一个整数 (),表示她们相应地重新分配蛋糕所需的最少步数。
在下一行,输出 个整数 ( 或 ),其中 表示在第 步中,Chocola 将她的一半蛋糕给了 Vanilla(操作 1), 表示 Vanilla 将她的一半蛋糕给了 Chocola(操作 2)。
测试用例
输入
输出
注意
在第一个测试用例中,她们可以通过以下步骤使得 Chocola 恰好拥有 个蛋糕,Vanilla 恰好拥有 个蛋糕。我们使用 表示 Chocola 当前有 个蛋糕,Vanilla 当前有 个蛋糕。
在第二个测试用例中,Chocola 已经恰好拥有 个蛋糕,Vanilla 已经恰好拥有 个蛋糕,因此不需要任何操作。
在第三个测试用例中,她们可以通过以下步骤使得 Chocola 恰好拥有 个蛋糕,Vanilla 恰好拥有 个蛋糕。
2137C 最大偶数和
来源:Codeforces Round 1047 (Div. 3)-C. Maximum Even Sum
Tags: 暴力破解 贪心 实现 数学
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
给定两个整数 和 。你需要执行以下操作:
首先,选择一个整数 ,使得 能被 整除。然后,同时将 乘以 ,并将 除以 。
找出 可能的最大偶数值。如果无法使 为偶数,则输出 。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 ()。接下来是测试用例的描述。
每个测试用例的第一行包含两个整数 和 (。
输出
对于每个测试用例,在新的一行输出 的最大偶数值。
测试用例
输入
输出
注意
在第一个测试用例中,可以证明 不可能为偶数。
在第二个测试用例中,最优的 是 。和为 。
2130B 无路径
来源:Codeforces Round 1040 (Div. 2)-B. Pathless
Tags: 构造算法
| 时间限制 | 内存限制 |
|---|---|
| 1 秒 | 256 megabytes |
有一个数组 ,由值 、 和 组成,以及一个整数 。保证 至少包含一个 、一个 和一个 。
Alice 想从索引 出发,向右或向左移动长度为 的步长,最终到达索引 。在 Alice 移动的过程中,她计算所访问位置的值之和,并希望这个和恰好等于 。
形式化地说,Alice 希望找到一个索引序列 ,使得:
- ,。
- 对所有 ,有 。
- 对所有 ,有 。
- 。
然而,Bob 想要重新排列 来阻止 Alice 达成她的目标。请判断是否可能重新排列 ,使得 Alice 无法找到她的目标序列(即使 Alice 足够聪明)。如果可能,你还需要输出重排后的数组 。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 ()。接下来是测试用例的描述。
每个测试用例的第一行包含两个整数 和 (, )。
每个测试用例的第二行包含 个整数 ()。
保证 至少包含一个 、一个 和一个 。
输出
对于每个测试用例,如果可能通过重新排列 使得 Alice 无法找到她的目标序列,则输出 个整数 —— 即 的这样一种重排。否则,输出 。
测试用例
输入
输出
注意
在第一个测试用例中, 的任何重排都可以阻止 Alice 达成她的目标。
在第二个测试用例中,无论怎样重排 ,Alice 总能找到序列 作为她的目标序列。
在第三个测试用例中,不存在 的重排可以阻止 Alice 达成她的目标。例如,对于 ,Alice 可以找到序列 作为她的目标序列。
2125C 统计好数字
来源:Educational Codeforces Round 181 (Rated for Div. 2)-C. Count Good Numbers
Tags:位掩码 组合数学 数学 数论
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 512 megabytes |
质数是指恰好有两个正因数( 和它自身)的正整数。前几个质数是 。
一个正整数的质因数分解是将其表示为质数的乘积。例如:
- 的质因数分解是 ;
- 的质因数分解是 ;
- 的质因数分解是 。
对于每个正整数,其质因数分解是唯一的(如果不考虑乘积中质数的顺序)。
我们称一个正整数为好的,如果其质因数分解中所有质数都至少由两个数字组成。例如:
- 不是好的(因为 7 是单位数);
- 不是好的(因为 3 是单位数);
- 是好的;
- 是好的。
你需要计算从 到 (包含端点)范围内好整数的数量。
输入
第一行包含一个整数 () —— 测试用例的数量。
每个测试用例占一行,包含两个整数 和 ()。
输出
对于每个测试用例,输出一个整数 —— 从 到 范围内好整数的数量。
测试用例
输入
输出
2111B 斐波那契立方体
来源:Educational Codeforces Round 179 (Rated for Div. 2)-B. Fibonacci Cubes
Tags: 暴力破解 动态规划 实现 数学
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
有 个斐波那契立方体,其中第 个立方体的边长等于 ,这里 是第 个斐波那契数。
在这个问题中,斐波那契数的定义如下:
- 对于 ,
还有 个空盒子,其中第 个盒子的宽度为 ,长度为 ,高度为 。
对于这 个盒子中的每一个,你需要判断是否所有的立方体都能放入该盒子中。立方体必须按照以下规则放入盒子:
- 立方体只能堆叠在盒子中,且立方体的边必须与盒子的边平行;
- 每个立方体必须放置在盒子的底部或其他立方体的顶部,并且该立方体下方的所有空间必须被占满;
- 较大的立方体不能放置在较小的立方体之上。
输入
每个测试包含多个测试用例。第一行包含一个整数 () —— 测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行有两个整数 和 () —— 分别是立方体的数量和空盒子的数量。
每个测试用例接下来的 行,每行包含 个整数 , 和 () —— 第 个盒子的尺寸。
输入附加约束:
- 所有测试用例的 的总和不超过 。
输出
对于每个测试用例,输出一个长度为 的字符串,其中第 个字符等于 "1" 表示所有 个立方体可以放入第 个盒子;否则,第 个字符等于 "0"。
测试用例
输入
输出
注意
在第一个测试用例中,只有一个盒子是合适的。立方体可以按如下方式放入其中:

2104C 卡牌游戏
来源:Educational Codeforces Round 178 (Rated for Div. 2)-C. Card Game
Tags: 暴力破解 构造算法 游戏 贪心 数学
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 512 megabytes |
Alice 和 Bob 正在玩一个游戏。他们拥有编号从 到 的 张卡牌。在游戏开始时,这些卡牌中的一部分发给 Alice,其余的发给了 Bob。
当且仅当 时,编号为 的卡牌击败编号为 的卡牌,但有一个例外:卡牌 击败卡牌 。
只要每个玩家至少拥有一张卡牌,游戏就会继续。在每一回合中,会发生以下事件:
- Alice 从她的手牌中选择一张卡牌,正面朝上放在桌面上;
- Bob 在看到 Alice 的卡牌后,从他自己的手牌中选择一张卡牌,正面朝上放在桌面上;
- 如果 Alice 的卡牌击败了 Bob 的卡牌,则两张卡牌都由 Alice 收取。否则,两张卡牌都由 Bob 收取。
玩家可以使用他们在之前回合中收取的卡牌。
在回合开始时没有卡牌的玩家输掉游戏。假设双方都采取最优策略,判断谁会获胜。
输入
第一行包含一个整数 () —— 测试用例的数量。
每个测试用例包含两行:
- 第一行包含一个整数 () —— 卡牌的数量;
- 第二行包含 个字符,每个字符是 A 或 B。如果第 个字符是 A,则编号为 的卡牌最初发给 Alice;否则,它发给 Bob。
输入的附加约束:在每个测试用例中,至少有一张卡牌最初发给 Alice,并且至少有一张卡牌最初发给 Bob。
输出
对于每个测试用例,如果 Alice 在最优策略下获胜,则输出 Alice;如果 Bob 获胜,则输出 Bob。可以证明,如果双方都采取最优策略,游戏必定会在有限回合内结束,并且有一方获胜。
测试用例
输入
输出
注意
在第一个测试用例中,Alice 只有一张卡牌,Bob 也只有一张卡牌。由于 Alice 的卡牌击败了 Bob 的卡牌,她在第一回合后获胜。
在第二个测试用例中,Alice 只有一张卡牌,Bob 也只有一张卡牌。由于 Bob 的卡牌击败了 Alice 的卡牌,他在第一回合后获胜。
在第三个测试用例中,有两种可能的游戏场景:
- 如果 Alice 在第一回合打出卡牌 ,Bob 可以用卡牌 回应并收取两张卡牌。然后,Alice 必须在第二回合打出卡牌 ,而 Bob 将用卡牌 回应。于是,他获胜;
- 如果 Alice 在第一回合打出卡牌 ,Bob 可以用卡牌 回应并收取两张卡牌。然后,Alice 必须打出卡牌 ,而 Bob 可以用卡牌 或卡牌 回应。于是,他获胜。
在第四个测试用例中,有两种可能的游戏场景:
- 如果 Alice 在第一回合打出卡牌 ,Bob 可以用卡牌 回应并收取两张卡牌。然后,Alice 必须在第二回合打出卡牌 ,而 Bob 将用卡牌 回应。于是,他获胜;
- 如果 Alice 在第一回合打出卡牌 ,Bob 可以用卡牌 回应并收取两张卡牌。然后,Alice 必须打出卡牌 ,而 Bob 可以用卡牌 或卡牌 回应。于是,他获胜。
2094D 咚咚萨胡尔
来源:Codeforces Round 1017 (Div. 4)-D. Tung Tung Sahur
Tags: 贪心 字符串 双指针
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
你面前有两个鼓:一个左鼓和一个右鼓。敲击左鼓可以记录为 "L",敲击右鼓可以记录为 "R"。
统治这个世界的神秘力量变幻莫测:有时,一次敲击只发出一声响,有时却发出两声响。因此,敲击左鼓可能听起来是 "L" 或 "LL",敲击右鼓可能听起来是 "R" 或 "RR"。
敲击的序列记录在字符串 中,而听到的声音记录在字符串 中。给定 和 ,判断字符串 是否可能是由字符串 所记录的敲击产生的结果。
例如,如果 "LR",那么敲击的结果可能是字符串 "LR"、"LRR"、"LLR" 和 "LLRR" 中的任何一个,但字符串 "LLLR" 或 "LRL" 则不可能。
输入
第一行包含一个整数 () —— 独立测试用例的数量。
每个测试用例的第一行包含字符串 (),该字符串仅由字符 "R" 和 "L" 组成,其中 表示字符串 的长度。
每个测试用例的第二行包含字符串 (),该字符串仅由字符 "R" 和 "L" 组成。
保证所有测试用例的 的总和不超过 。
输出
对于每组输入数据,如果 可能是听到的声音,则输出 "YES",否则输出 "NO"。你可以以任意大小写输出。
测试用例
输入
输出
2032B 中位数
来源:Codeforces Round 983 (Div. 2)-B. Medians
Tags: 构造算法 贪心 实现 数学
| 时间限制 | 内存限制 |
|---|---|
| 1 秒 | 256 megabytes |
给定一个数组 ,其中 是奇数,以及一个整数 。
你的任务是选择一个奇数正整数 ,并将 分割成 个子数组 ,使得:
- 数组 的每个元素恰好属于一个子数组。
- 对于所有 , 是奇数,即每个子数组的长度是奇数。
- ,即所有子数组中位数组成的数组的中位数 必须等于 。 表示数组 的中位数。
长度为 的数组 的一个子数组是指对于某些满足 的整数,形如 的数组。
一个奇数长度数组的中位数是指将数组按非递减顺序排序后位于中间的元素。例如:,,。
输入
每个测试包含多个测试用例。第一行包含一个整数 () —— 测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行包含两个整数 和 (, 是奇数) —— 分别是数组 的长度和所有子数组中位数组成的数组的期望中位数。
保证所有测试用例的 的总和不超过 。
输出
对于每个测试用例:
- 如果没有合适的分割方法,则在一行中输出 。
- 否则,在第一行输出一个奇数整数 (),在第二行输出 个不同的整数 () —— 表示每个子数组的左边界。
详细来说,对于一个有效的答案 :
- .
如果存在多个解决方案,你可以输出其中任意一个。
测试用例
输入
输出
注意
在第一个测试用例中,给定的分割有 且 。显然,。
在第二个测试用例中,给定的分割有 且:
因此,。
在第三个测试用例中,对于 没有有效的分割方法。
在第四个测试用例中,给定的分割有 且:
因此,。
2030C 真正的对决
来源:Codeforces Round 979 (Div. 2)-C. A TRUE Battle
Tags: 暴力破解 游戏 贪心
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
Alice 和 Bob 正在玩一个游戏。有一个包含 个布尔值的列表,每个布尔值要么为真要么为假,以一个长度为 的二进制字符串 给出(其中 代表真, 代表假)。最初,这些布尔值之间没有运算符。
Alice 和 Bob 将轮流在布尔值之间放置
and或or运算符,Alice 先手。因此,由于有 个布尔值,游戏将进行 轮。Alice 的目标是让最终的语句计算结果为真,而 Bob 的目标是让它为假。给定布尔值列表,判断如果双方都采取最优策略,Alice 是否会获胜。为了计算最终表达式的结果,重复执行以下步骤,直到语句只剩下一个真或假值:
- 如果语句中包含
and运算符,则任意选择一个,并用其计算后的结果替换其周围的子表达式。- 否则,语句中包含
or运算符。任意选择一个,并用其计算后的结果替换其周围的子表达式。例如,表达式
true or false and false的计算过程为true or (false and false)true or falsetrue。可以证明任何复合语句的结果都是唯一的。
二进制字符串是指仅由字符 和 组成的字符串。
输入
第一行包含 () —— 测试用例的数量。
每个测试用例的第一行包含一个整数 () —— 字符串的长度。
第二行包含一个长度为 的二进制字符串,由字符 和 组成 —— 表示布尔值列表。
保证所有测试用例的 的总和不超过 。
输出
对于每个测试用例,如果 Alice 获胜,则输出 "YES"(不带引号),否则输出 "NO"(不带引号)。
你可以以任意大小写形式输出 "YES" 和 "NO"(例如,字符串 "yES"、"yes" 和 "Yes" 将被识别为肯定响应)。
测试用例
输入
输出
注意
在第一个测试用例中,Alice 可以在两个布尔值之间放置 and。由于没有其他位置可以放置运算符,游戏结束,Alice 获胜,因为 true and true 的结果是 true。
在第二个测试用例中,Alice 可以在中间的 true 和左边的 false 之间放置 or。Bob 可以在中间的 true 和右边的 false 之间放置 and。语句 false or true and false 的结果是 false。
请注意,这些示例可能不是 Alice 或 Bob 的最佳策略。
2029B 替换
来源:Refact.ai Match 1 (Codeforces Round 985)-B. Replacement
Tags: 构造算法 游戏 字符串
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
你有一个长度为 的二进制字符串 ,Iris 给了你另一个长度为 的二进制字符串 。
Iris 将和你玩一个游戏。在游戏中,你将对 执行 次操作。在第 次操作中 ():
- 首先,你选择一个索引 ,满足 且 。如果无法选择这样的索引,你就输了;
- 然后,你将 替换为 。注意,这会使 的长度减少 。
如果所有 次操作都成功执行,你就赢了。
判断你是否有可能赢得这个游戏。
二进制字符串是指每个字符都是 或 的字符串。
输入
每个测试包含多个测试用例。输入的第一行包含一个整数 () —— 测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行包含一个整数 () —— 的长度。
第二行包含长度为 的二进制字符串 ( 或 )。
第三行包含长度为 的二进制字符串 ( 或 )。
保证所有测试用例的 的总和不超过 。
输出
对于每个测试用例,如果你能赢得游戏,则打印 "YES"(不带引号),否则打印 "NO"(不带引号)。
你可以以任何大小写形式输出答案(大写或小写)。例如,字符串 "yEs"、"yes"、"Yes" 和 "YES" 将被识别为肯定响应。
测试用例
输入
输出
注意
在第一个测试用例中,你无法执行第一个操作。因此,你输了游戏。
在第二个测试用例中,你可以在唯一的操作中选择 ,之后 变为 。因此,你赢了游戏。
在第三个测试用例中,你可以执行以下操作:。
1997C 偶数位置
来源:Educational Codeforces Round 168 (Rated for Div. 2)-C. Even Positions
Tags: 构造算法 数据结构 贪心
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
Monocarp 有一个长度为 ( 为偶数)的正则括号序列 。他甚至想出了自己计算其代价的方法。
他知道在正则括号序列(RBS)中,每个开括号都与对应的闭括号配对。因此,他决定将 RBS 的代价计算为所有对应括号对之间距离的总和。
例如,我们来看 RBS
(()())。它有三对括号:
(__)__:位置 和 的括号之间的距离为 ;_()___:距离为 ;____():距离为 。因此
(()())的代价是 。不幸的是,由于数据损坏,Monocarp 丢失了所有奇数位置 上的字符。只有偶数位置()的字符保留了下来。例如,
(()())变成了_(_)_)。Monocarp 希望通过在奇数位置放置括号来恢复他的 RBS。但由于恢复的 RBS 可能不唯一,他想要选择代价最小的一个。这对 Monocarp 一个人来说太难了,你能帮助他吗?
提醒:正则括号序列是一个仅由括号组成的字符串,使得该序列在插入数字 1 和加号 + 后能构成一个合法的数学表达式。例如,
()、(())或(()())()是 RBS,而)、()(或())(()不是。
输入
第一行包含一个整数 () —— 测试用例的数量。接下来是 个测试用例。
每个测试用例的第一行包含一个整数 (; 为偶数) —— 字符串 的长度。
每个测试用例的第二行包含一个长度为 的字符串 ,其中所有奇数位置的字符都是 '_',所有偶数位置的字符都是 '(' 或 ')'。
附加约束:
- 可以恢复为至少一个正则括号序列;
- 所有测试用例的 的总和不超过 。
输出
对于每个测试用例,输出一个整数 —— 通过将 中的 '_' 替换为括号所能得到的最小代价。
测试用例
输入
输出
注意
在第一个测试用例中,最优方案是使 等于 (()())。 的代价将等于 。
在第二个测试用例中,唯一的选择是使 等于 (),代价为 。
在第三个测试用例中,唯一可能的 RBS 是 ()()()(),代价为 。
在第四个测试用例中,最优方案是使 等于 (())(()),代价为 。
1994B 趣味游戏
来源:Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)-B. Fun Game
Tags: 位掩码 构造算法 贪心 数学
| 时间限制 | 内存限制 |
|---|---|
| 1 秒 | 256 megabytes |
Vova 非常喜欢 异或(XOR) 操作(记为 )。最近,在他准备睡觉时,他想出了一个有趣的游戏。
在游戏开始时,Vova 选择两个长度为 的二进制序列 和 ,并将它们交给 Vanya。二进制序列是指仅由数字 和 组成的序列。Vanya 可以选择整数 ,满足 ,并对于所有 同时 将 替换为 ,其中 是序列 的第 个元素。
为了使游戏有趣,必须存在获胜的可能性。如果 Vanya 能够通过无限次操作从序列 得到序列 ,则他获胜。请判断对于序列 和 来说,这个游戏是否会是有趣的。
输入
每个测试包含多个测试用例。第一行包含一个整数 () —— 测试用例的数量。随后是测试用例的描述。
每个测试用例的第一行包含一个整数 () —— 序列 和 的长度。
每个测试用例的第二行包含一个长度为 的二进制序列 。
每个测试用例的第三行包含一个长度为 的二进制序列 。
保证所有测试用例的 的总和不超过 。
输出
对于每个测试用例,如果游戏会是有趣的,则输出 "Yes",否则输出 "No"。
你可以以任意大小写形式输出每个字母(例如,字符串 "yEs"、"yes"、"Yes" 和 "YES" 都将被识别为肯定答案)。
测试用例
输入
输出
注意
在第一个测试用例中,Vanya 无法改变序列 ,因为唯一可能的操作是选择 。
在第二个测试用例中,序列 和 已经相等。
在第三个测试用例中,Vanya 可以按如下方式操作:
- 选择 和 ,然后 将变为 。
- 选择 和 ,然后 将变为 。
- 选择 和 ,然后 将变为 。
1993B 奇偶性与和
来源:Codeforces Round 963 (Div. 2)-B. Parity and Sum
Tags: 构造算法 贪心
| 时间限制 | 内存限制 |
|---|---|
| 1 秒 | 256 megabytes |
给定一个包含 个正整数的数组 。
在一次操作中,你可以选择任意一对索引 ,使得 和 具有不同的奇偶性,然后将较小的那个数替换为它们的和。更正式地说:
- 如果 ,则将 替换为 ;
- 否则,将 替换为 。
找出使数组中所有元素具有相同奇偶性所需的最少操作次数。
输入
第一行包含一个整数 () —— 测试用例的数量。
每个测试用例的第一行包含一个整数 ()。
第二行包含 个整数 () —— 数组 的元素。
保证所有测试用例的 的总和不超过 。
输出
对于每个测试用例,输出一个整数 —— 所需的最少操作次数。
测试用例
输入
输出
注意
在第一个测试用例中,所有整数已经具有相同的奇偶性。因此,不需要任何操作。
在第三个测试用例中,我们可以执行两次操作 和 。数组 的变化如下:。
在第四个测试用例中,一个最优操作序列的例子是 、、 和 。数组 的变化如下:。
1986C 更新查询
来源:Codeforces Round 954 (Div. 3)-C. Update Queries
Tags: 数据结构 贪心 排序
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
考虑以下简单问题。给定一个长度为 、由小写拉丁字母组成的字符串 ,一个长度为 的索引数组 (),以及一个长度为 、由小写拉丁字母组成的字符串 。然后,你按顺序执行更新操作,即在第 次操作中,你将 设置为 。注意,你需要从第一个到最后一个执行所有 次操作。
当然,如果你改变数组 中索引的顺序和/或字符串 中字母的顺序,你可以得到不同的结果。找出在 次更新操作后可以得到的字典序最小的字符串 ,前提是你可以任意重新排列数组 中的索引和字符串 中的字母。
字符串 字典序小于字符串 ,当且仅当满足以下条件之一:
- 是 的前缀,但 ;
- 在 和 第一个不同的位置上,字符串 中的字符在字母表中比字符串 中的对应字符靠前。
输入
每个测试包含多组输入数据。第一行包含一个整数 () —— 输入数据的组数。接下来是它们的描述。
每组输入数据的第一行包含两个整数 和 () —— 分别是字符串 的长度和更新的次数。
每组输入数据的第二行包含一个长度为 的字符串 ,由小写拉丁字母组成。
每组输入数据的第三行包含 个整数 () —— 索引数组 。
每组输入数据的第四行包含一个长度为 的字符串 ,由小写拉丁字母组成。
保证所有输入数据的 的总和不超过 。同样,所有输入数据的 的总和也不超过 。
输出
对于每组输入数据,输出在可以任意重新排列数组 中的索引和字符串 中的字母的情况下,经过 次更新操作后可以得到的字典序最小的字符串 。
测试用例
输入
输出
注意
在第一组输入数据中,你可以保持数组 和字符串 不变,并简单地按该顺序执行所有操作。
在第二组输入数据中,你可以设置数组 和 "zczw"。那么字符串 将按如下方式变化:。
在第三组输入数据中,你可以保持数组 不变,并设置 "admn"。那么字符串 将按如下方式变化:。
1976B 增加/减少/复制
来源:Educational Codeforces Round 166 (Rated for Div. 2)-B. Increase/Decrease/Copy
Tags: 贪心 实现
| 时间限制 | 内存限制 |
|---|---|
| 2 秒 | 256 megabytes |
给定两个整数数组:长度为 的数组 和长度为 的数组 。
你可以按任意顺序多次执行以下操作:
- 选择数组 中的任意元素并将其增加 ;
- 选择数组 中的任意元素并将其减少 ;
- 选择数组 中的任意元素,复制它并将副本附加到数组 的末尾。
你的任务是计算将数组 转换为数组 所需的最少操作次数(可能为零)。可以证明,在问题的约束下,这总是可行的。
输入
第一行包含一个整数 () —— 测试用例的数量。
每个测试用例包含三行:
- 第一行包含一个整数 ();
- 第二行包含 个整数 ();
- 第三行包含 个整数 ()。
输入的附加约束:所有测试用例的 的总和不超过 。
输出
对于每个测试用例,输出一个整数 —— 将数组 转换为数组 所需的最少操作次数(可能为零)。
测试用例
输入
输出
注意
在第一个例子中,你可以按以下方式将 转换为 :。
Last updated on