QOJ.ac

QOJ

実行時間制限: 1.5 s メモリ制限: 16 MB 満点: 100

#13042. 矿工

統計

有两个煤矿,每个煤矿都雇佣了一组矿工。采煤工作很辛苦,所以矿工需要食物来维持体力。每当有一批食物运送到他们的矿井时,矿工就会生产一定数量的煤。食物共有三种:肉类、鱼类和面包。

矿工喜欢饮食多样化,如果食物供应保持多样,他们的生产效率会更高。更准确地说,每当有一批新货物运送到他们的矿井时,他们会考虑这批新货物以及之前的两批货物(如果不足两批,则考虑所有已有的货物),然后:

  • 如果所有货物类型相同,他们将生产 1 单位的煤。
  • 如果货物中包含两种不同的类型,他们将生产 2 单位的煤。
  • 如果货物中包含三种不同的类型,他们将生产 3 单位的煤。

我们预先知道食物货物的类型以及它们发送的顺序。可以通过决定将哪批货物发送到哪个矿井来影响煤的产量。货物不能拆分;每批货物必须完整地发送到其中一个矿井。

两个矿井不一定非要接收相同数量的货物(实际上,允许将所有货物发送到同一个矿井)。

题目描述

给定食物货物的类型及其发送顺序,编写一个程序,通过决定将每批货物发送到矿井 1 还是矿井 2,找出可以生产的煤的最大总产量。

输入格式

第一行包含一个整数 $N$ ($1 \le N \le 100\,000$),表示食物货物的数量。

第二行包含一个长度为 $N$ 的字符串,表示货物按发送顺序排列的类型。每个字符都是大写字母 'M'(代表肉类)、'F'(代表鱼类)或 'B'(代表面包)。

输出格式

输出一个整数,表示可以生产的煤的最大总产量。

子任务

在总分 45 分的测试用例中,货物数量 $N$ 最多为 20。

样例

输入 1

6
MBMFFB

输出 1

12

说明 1

在左侧样例中,通过按以下顺序分配货物:矿井 1、矿井 1、矿井 2、矿井 2、矿井 1、矿井 2,货物将依次产生 1、2、1、2、3 和 3 单位的煤,总计 12 单位。还有其他方法可以达到这个最大值。

输入 2

16
MMBMBBBBMMMMMBMB

输出 2

29

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.