在算法竞赛业界,以下是鼎鼎有名的两个比赛:
NOI (National Olympiad in Informatics) 指全国青少年信息学奥林匹克竞赛; IOI (International Olympiad in Informatics) 指国际信息学奥林匹克竞赛。
前者代表了全国的较高水平,后者则为全球范围强者的竞争。
现在有一个字符串,GhostCai想考考你,最多能划分出多少个内容为NOI
或者IOI
的子序列?
注:把字符串s中的一些(可以是0个)字符删去,得到新字符串t,我们说t是s的子序列。比如对于BJTUACM
,BJTU
和BJACM
都是它的子序列,而BJUT
和BUPT
不是。
第一行为一个字符串 $s\ (1\le |s|\le 10^6)$ ,保证 $s$ 中只出现大写字母。
一个整数,代表最多能选出的不重叠的NOI
或IOI
子序列个数。
选IOI
,则剩下NOKI
;
再选NOI
,则剩下K
;
可以证明,最多只能选2个内容为NOI
或IOI
的字符串。