AT_joisc2016_f.トイレ

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

JOI会场附近有两个厕所,一个是女性专用的,另外一个是男女混用的。女性可以用两种厕所,但是男性只能用男女混用的。
比赛结束后,有2N2N个选手排成一列上厕所。排队的人有男的和女的。他们将按照下列规则排队上厕所。

  • 如果当前是一个女生在队头,那么选择空的那个厕所进入。若两边都是空的,优先进入女性专用厕所。

  • 如果当前是一个男生在队头,他会遵守以下规则。

    • 如果男女公用厕所是空的,他就会去男女共用的厕所。

    • 如果男女公用厕所不是空的但是女性专用厕所是空的,他会请队伍里面最前面的一个女生去女性专用厕所。

所有的选手都会用1分钟上厕所。你可以忽略选手出入厕所的时间。
但是这样可能不会在NN分钟之内上完厕所,于是我们希望能够改变选手排队的次序,进而保证所有选手能在NN分钟之内上完厕所。
排完次序之后,我们定义一个选手的不满度。

  • 一个选手的不满度定义为排序之前在这个选手的后面但是排序后在该选手的前面的人数。

不满度与排队时进入厕所次序无关。

我们希望能够适当地排序后使得所有人能在NN分钟之内上完厕所,并且不满度最小。

我们给定2N2N个选手的初始排队顺序,确定是否能够在NN分钟内上完厕所。如果可以的话,写出一个程序,找到选手的不满度的最小值。

输入格式

  • 第一行,输入一个NN。表示有2N2N个人排序。

  • 第二行,输入一个MM。

  • 接下来MM行,有一个字符串SiS_i和整数KiK_i,并且以空格符间隔。这些数据表示用KiK_i个SiS_i依次接在后面。

我们以此定义出一个字符串XX(即为上述初始排队队列)。XX左起第j(j≤2N)j(j \leq 2N)个字符代表这个选手的性别。若这个字符是M,代表这个选手是男性,若这个字符是F,那么这个选手是女性。

输出格式

输出选手最小的可能不满度值。但是如果无论如何排序都无法在NN分钟以内上完厕所,输出-1

说明/提示

输入数据满足以下数据。

  • 1≤N≤10181 \leq N \leq 10^{18}。

  • 1≤M≤1000001 \leq M \leq 100000。

  • 1≤Ki≤2N(1≤i≤M)1 \leq K_i \leq 2N (1 \leq i \leq M)。

  • 1≤∣Si∣≤2N(1≤i≤M)1 \leq |S_i| \leq 2N (1 \leq i \leq M),其中∣Si∣|S_i|代表SiS_i的长度。

  • Si(1≤i≤M)S_i (1 \leq i \leq M)的所有字符都是M或者F。

  • 通过KiK_i和SiS_i构造的字符串XX,满足XX长度为2N2N。

任务

子任务1[14分]

满足以下条件。

  • N≤10N \leq 10。

  • M=1M=1。

  • Ki=1K_i=1。

子任务2[22分]

满足以下条件。

  • N≤100000N \leq 100000。

  • M=1M=1。

  • Ki=1K_i=1。

子任务3[64分]

没有追加条件。

测试样例

输入1

6
1
FFFMMMMMMFFF 1

输出1

2

重排序列之后为FMMFFMMMMFFF。

输入2

6
1
MMFFMMMMFFMF 1

输出2

-1

无论如何排序都无法完成在NN分钟之内完成。

输入3

6
1
MFFFMFMMFFFM 1

输出3

0

输出4

6
4
M 1
F 2
FM 2
MFFFM 1

输出4

0

输入样例3和4构造的字符串XX是一样的,重排序列之后为MFFFMFMMFFFM。

输入解题思路,AI测评打分。不知道怎么写?

首页