CF1450H2.Multithreading (Hard Version)

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

The only difference between the two versions of the problem is that there are no updates in the easy version.

There are nn spools of thread placed on the rim of a circular table. The spools come in two types of thread: the first thread is black and the second thread is white.

For any two spools of the same color, you can attach them with a thread of that color in a straight line segment. Define a matching as a way to attach spools together so that each spool is attached to exactly one other spool.

Coloring is an assignment of colors (white and black) to the spools. A coloring is called valid if it has at least one matching. That is if the number of black spools and the number of white spools are both even.

Given a matching, we can find the number of times some white thread intersects some black thread. We compute the number of pairs of differently colored threads that intersect instead of the number of intersection points, so one intersection point may be counted multiple times if different pairs of threads intersect at the same point. If cc is a valid coloring, let f(c)f(c) denote the minimum number of such intersections out of all possible matchings.

The circle above is described by the coloring bwbbbwww. After matching the spools as shown, there is one intersection between differently colored threads. It can be proven that it is the minimum possible, so f(bwbbbwww)=1f(\text{bwbbbwww}) = 1 . You are given a string ss representing an unfinished coloring, with black, white, and uncolored spools. A coloring cc is called ss -reachable if you can achieve it by assigning colors to the uncolored spools of ss without changing the others.

A coloring cc is chosen uniformly at random among all valid, ss -reachable colorings. Compute the expected value of f(c)f(c) . You should find it by modulo 998244353998244353 .

There will be mm updates to change one character of ss . After each update, you should again compute the expected value of f(c)f(c) .

We can show that each answer can be written in the form pq\frac{p}{q} where pp and qq are relatively prime integers and q≢0(mod998244353)q\not\equiv 0\pmod{998244353} . The answer by modulo 998244353998244353 is equal to (pq1)(p\cdot q^{-1}) modulo 998244353998244353 .

输入格式

The first line contains two integers nn , mm ( 2n21052\le n\le 2\cdot 10^5 , nn is even, 0m21050\le m\le 2\cdot 10^5 ) — the number of spools and the number of updates, respectively.

The second line contains a string ss of length nn — the unfinished coloring of the spools. The ii -th character will be 'w', 'b', or '?', describing if the ii -th spool is white, black, or uncolored, respectively.

Each of the next mm lines contains an integer ii ( 1in1 \leq i \leq n ) — the position of the character in ss to be updated, and a character cc ( c{w,b,?}c \in \{\text{w}, \text{b}, \text{?}\} ) — the new color of the spool ii after the update.

It is guaranteed there exists at least one uncolored spool initially and after each update.

输出格式

Print m+1m+1 lines: the expected value of f(c)f(c) initially and after each update. All values should be found by modulo 998244353998244353 .

输入输出样例

  • 输入#1

    8 0
    bwbb?www

    输出#1

    1
  • 输入#2

    10 3
    ???ww?wb??
    4 ?
    5 ?
    2 w

    输出#2

    436731905
    218365953
    374341633
    530317313
  • 输入#3

    4 3
    bw?b
    1 w
    2 b
    1 w

    输出#3

    0
    0
    1
    1

说明/提示

The first test corresponds closely to the image. Coloring '?' as 'w' does not create a valid coloring because the number of black spools is odd. Then the only reachable valid coloring is 'bwbbbwww' and f(bwbbbwww)=1f(\text{bwbbbwww}) = 1 , so the expected value is 11 .

In the second test, the string after each update is:

  1. ????w?wb??
  2. ??????wb??
  3. ?w????wb??

In the third test, the string after each update is:

  1. ww?b
  2. wb?b
  3. wb?b
首页