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的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 1150E(树线段树)

CF 1150 D Three Religions——序列自动机优化DP

[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段

c_cpp Codeforces片段

算法竞赛入门码蹄集新手村600题(MT1101-1150)

BZOJ 1150 1150: [CTSC2007]数据备份Backup (贪心+优先队列)