欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF2072B.Having Been a Treasurer in the Past, I Help Goblins Deceive
Having Been a Treasurer in the Past, I Help Goblins Deceive
题目描述
完成第一个任务后,章人(Akito)离开了初始洞穴。不久后,他偶然发现了一个哥布林村落。
由于章人无处可居,他想了解房屋的价格。众所周知,哥布林将数字写作由字符 '-' 和 '_' 组成的字符串,字符串 所表示的数值等于其所有等于字符串 "-_-" 的不同子序列 的数量(这与哥布林的面部特征非常相似)。
例如,字符串 "-_--_-" 表示的数值为 ,因为它包含 个 "-_-" 子序列:
最初,哥布林在回答章人的问题时随机写了一个字符串数值 ,但随后他们意识到想要从旅行者身上获取尽可能多的黄金。为此,他们要求你重新排列字符串 中的字符,使得该字符串所表示的数值最大化。
字符串 的子序列是指通过删除 中若干(可能为 )个字符后得到的字符串 。若两个子序列是通过删除不同位置的字符得到的,则它们被视为不同的子序列。
输入格式
第一行包含一个整数 ()—— 测试用例的数量。
每个测试用例的第一行包含一个整数 ()—— 哥布林所写字符串的长度。
每个测试用例的第二行包含一个长度为 的字符串 ,仅由字符 '-' 和 '_' 组成——哥布林所写的字符串。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数——在最优重排字符串 后,等于字符串 "-_-" 的子序列的最大数量。
说明/提示
第一个测试用例中,最优方案是将字符重排为 "-_-"。这是唯一一个长度为 且至少包含一个 "-_-" 子序列的字符串。
第二个测试用例中,只有一个字符 "-",而构成子序列 "-_-" 至少需要两个 "-"。这意味着无论如何重排,答案都是 。
第七和第八个测试用例中,字符串长度 ,这意味着长度为 的子序列不存在。
翻译由 DeepSeek R1 完成
样例
8
3
--_
5
__-__
9
--__-_---
4
_--_
10
_-_-_-_-_-
7
_------
1
-
2
_-
1
0
27
2
30
9
0
0
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |