P13202 [GCJ 2016 #3] Teaching Assistant

题目描述

你正在上一门以题集为评分方式的编程课程。课程持续天数为正偶数天。你开始时没有任何题集。在课程的每一天,你必须执行以下三种操作之一: * 申请一个“编程(Coding)”题集; * 申请一个“Jamming”题集; * 提交一个题集进行评分。你必须至少拥有一个题集才能选择此操作。如果你有多个题集,必须提交**最近申请的那一个**,无论其类型如何。 所有题集都是不同的。对提交题集的类型和数量没有要求。一旦你提交了某个题集,你就不再拥有该题集。任何在课程结束前未提交的题集都不会获得分数。 题集的申请和提交都通过一个人工智能助教完成。奇怪的是,助教每天都有不同的心情——每一天只会喜欢“Coding”或“Jamming”中的一种。 * 当你申请题集时: * 如果申请的题集类型与助教当天的心情一致,则该题集最高可得 10 分。 * 如果申请的题集类型与助教当天的心情不一致,则该题集最高可得 5 分。 * 当你提交题集时: * 如果提交的题集类型与助教当天的心情一致,则你能获得该题集的最高分。 * 如果提交的题集类型与助教当天的心情不一致,则你获得的分数比最高分少 5 分。 例如: * 如果你在助教心情为“Coding”的那天申请了一个“Coding”题集,并在助教心情为“Jamming”的那天提交,则你能获得 5 分:该题集最高分为 10 分,但助教会少给 5 分。 * 如果你在助教心情为“Coding”的那天申请了一个“Jamming”题集,并在助教心情为“Jamming”的那天提交,则你能获得 5 分:该题集最高分为 5 分,助教会给你最高分。 幸运的是,你有一位非常了解助教的师兄,他告诉了你课程每一天助教的心情。请问你最多能获得多少分?

输入格式

输入的第一行包含一个整数 $\mathbf{T}$,表示测试用例数量。接下来有 $\mathbf{T}$ 组测试用例,每组一行,包含一个由 $\mathbf{C}$ 和/或 $\mathbf{J}$ 组成的字符串 $\mathbf{S}$。第 $i$ 个字符表示课程第 $i$ 天助教的心情,$\mathbf{C}$ 表示“Coding”,$\mathbf{J}$ 表示“Jamming”。

输出格式

对于每组测试用例,输出一行 `Case #x: y`,其中 $\mathrm{x}$ 为测试用例编号(从 1 开始),$\mathrm{y}$ 表示你在该组测试用例下能获得的最高分。

说明/提示

**样例解释** 对于样例第 1 组,最优策略如下: - 第 1 天:申请“Coding”题集(记为 C1)。 - 第 2 天:提交 C1。 - 第 3 天:申请“Jamming”题集(记为 J1)。 - 第 4 天:提交 J1。 对于样例第 2、3、4 组,最优策略为:先申请 C1,再申请 J1,然后提交 J1,最后提交 C1。 以第 2 组为例,注意你不能先申请 C1,再申请 J1,然后提交 C1。因为每次只能提交最近申请的题集。 对于第 5 组,你可以每隔一天申请一个“Coding”题集,下一天就提交它。 **限制条件** - $1 \leqslant \mathbf{T} \leqslant 100$。 - $\mathbf{S}$ 的长度为偶数。 **小数据集(5 分,测试集 1 - 可见)** - $2 \leqslant \mathbf{S}$ 的长度 $\leqslant 50$。 **大数据集(10 分,测试集 2 - 隐藏)** - $2 \leqslant \mathbf{S}$ 的长度 $\leqslant 20000$。 - 所有测试用例的 $\mathbf{S}$ 总长度不超过 150000。 翻译由 GPT4.1 完成。