欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1622B.Berland Music
Berland Music
题目描述
Berland Music 是一个专为支持 Berland 本地艺术家而打造的音乐流媒体服务。其开发者目前正在开发一套歌曲推荐模块。
假设 Monocarp 收到了 首推荐歌曲,编号从 到 。第 首歌的预测评分为 ,其中 ,且 到 的每个整数恰好出现一次。换句话说, 是一个排列。
在听完每首歌后,Monocarp 会按下“喜欢”或“不喜欢”按钮。用一个字符串 表示他的投票序列,其中 表示他不喜欢第 首歌, 表示他喜欢第 首歌。
现在,服务需要重新评估这些歌曲的评分,使得:
- 新的评分 仍然构成一个排列(,每个整数 到 恰好出现一次);
- Monocarp 喜欢的每首歌的评分都要高于他不喜欢的每首歌(形式化地说,对于所有满足 且 的 ,都应有 )。
在所有满足条件的排列 中,找到一个使得 最小的排列,其中 表示 的绝对值。
输出排列 。如果有多个答案,可以输出任意一个。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含一个整数 (),表示歌曲数量。
第二行包含 个整数 (),表示预测评分的排列。
第三行包含一个长度为 的字符串 ,每个字符为 或 。 表示 Monocarp 不喜欢该歌曲, 表示喜欢。
所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一行 个整数,表示重新评估后的歌曲评分排列 。如果有多个使 最小的答案,可以输出任意一个。
说明/提示
在第一个测试用例中,只有一种排列 能满足所有喜欢的歌评分高于所有不喜欢的歌:第 首歌评分为 ,第 首歌评分为 。。
在第二个测试用例中,Monocarp 喜欢所有歌曲,因此所有排列都可以。使绝对差之和最小的排列是 本身,其代价为 。
由 ChatGPT 4.1 翻译
样例
3
2
1 2
10
3
3 1 2
111
8
2 3 1 8 5 4 7 6
01110001
2 1
3 1 2
1 6 5 8 3 2 4 7
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |