CF2026C.Action Figures
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在 Monocarp 家附近有一家商店,专门售卖手办。近期,这家店将推出一套新的手办系列,总共包含 n 个手办。其中,第 i 个手办的价格为 i 枚金币。在第 i 天到第 n 天之间,这个手办都是可以购买的。
Monocarp 知道他在这 n 天中的哪几天可以去商店。
每次去商店的时候,他可以购买多件手办(当然,不能买尚未发售的手办)。如果他在同一天购买了至少两个手办,他可以享受一个折扣:他所购买的最贵手办是免费的,也就是说他无需为该手办支付费用。
Monocarp 的目标是从这个手办系列中,分别购买一个第 1 个手办、一个第 2 个手办……一直到一个第 n 个手办。注意,每个手办只能购买一次。请你帮他计算,他最少需要花费多少金币?
输入格式
第一行输入一个整数 t,表示有多少个测试用例(1≤t≤104)。
每个测试用例包含两行:
- 第一行是一个整数 n,表示手办的数量(也是销售天数)(1≤n≤4⋅105);
- 第二行是一个长度为 n 的字符串 s。如果在第 i 天 Monocarp 可以去商店,si 就为 1;否则为 0。
额外的限制条件有:
- 在每个测试用例中,字符串 s 的最后一个字符 sn 一定是 1,所以 Monocarp 无论如何都能在最后一天买到所有手办。
- 所有测试用例中 n 的总和不超过 4⋅105。
输出格式
对每个测试用例,输出一个整数,表示 Monocarp 最少需要花费的金币数。
输入输出样例
输入#1
4 1 1 6 101101 7 1110001 5 11111
输出#1
1 8 18 6
说明/提示
在第一个测试用例中,Monocarp 可以在第一天购买第一个手办,花费 1 枚金币。
在第二个测试用例中,他可以在第三天购买第 1 和第 3 个手办,在第四天购买第 2 和第 4 个手办,在第六天购买第 5 和第 6 个手办。这样总费用为 1+2+5=8 枚金币。
在第三个测试用例中,他可以在第三天购买第 2 和第 3 个手办,其余手办在第七天购买,最终花费 1+2+4+5+6=18 枚金币。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?