Codeforces 1150
Posted blogofchc1234567890
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1150相关的知识,希望对你有一定的参考价值。
1150 C
题意
给你一个由 \(1,2\) 组成的数组,要你重新排列这个数组,使得它的所有是质数的前缀和最长。 \((1\le n\le 200000)\)
Examples
input
5
1 2 1 2 1
output
1 1 1 2 2
input
9
1 1 2 1 1 1 2 1 1
output
1 1 1 2 1 1 1 2 1
解
一个一个往上去凑就行了,优先选2。
1150 D
题意
给你一个长 \(\le 10^5\) 的文本串,现在你有三个模式串,每个长度 \(\le 250\) ,初始为空,现在你有两种操作:
+ i c
,给串 \(i\) 末尾加上一个字符 \(c\)- i
,删除 \(i\) 末尾的字符
现在在每次操作后询问三个串是否分别对应文本串中三个不相交的子序列。
Examples
input
6 8
abdabc
- 1 a
- 1 d
- 2 b
- 2 c
- 3 a
- 3 b
- 1 c
- 2
output
YES
YES
YES
YES
YES
YES
NO
YES
input
6 8
abbaab - 1 a
- 2 a
- 3 a
- 1 b
- 2 b
- 3 b
- 1
2 z
output
YES
YES
YES
YES
YES
NO
YES
NO解
每次询问可以在 \(O(250^2)\) 时间内解决,考虑 \(n^2\) dp。
我们设 \(nxt[i][c]\) 为字符 \(c\) 在位置 \(i\) 后第一次出现的位置。
先考虑 \(n^3\) 做法。
设 \(dp[i][j][k]\) 表示第一个串匹配到 \(i\) ,第二个串
以上是关于Codeforces 1150的主要内容,如果未能解决你的问题,请参考以下文章
CF 1150 D Three Religions——序列自动机优化DP
[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段