P17528 [JAG 2026 Summer Camp #1] Neighbour or Opposite
题目描述
有 $2N$ 个座位排成一圈,按顺时针顺序编号为 $1,2,\ldots,2N$。
对于每个 $i$($1\le i\le 2N-1$),座位 $i$ 和 $i+1$ 相邻。座位 $1$ 和 $2N$ 也相邻。
对于每个 $i$($1\le i\le N$),座位 $i$ 和 $i+N$ 相对。
部分座位上坐着人。对于每个 $i$($1\le i\le 2N$),若 $S_i$ 为 `o`,则座位 $i$ 上恰好坐着一个人;若 $S_i$ 为 `x`,则该座位为空。
你想将这些人配对,要求满足以下条件:
- 每个人至多属于一对。
- 每对中的两个人分别坐在相邻或相对的座位上。
求最多能组成多少对,以及达到这个最大值的方案数。
若两种配对方案对应的无序对集合不同,则认为它们是不同的方案。
输入格式
输入包含一组测试数据,格式如下:
```text
N
S
```
第一行包含一个整数 $N$($1\le N\le 10^6$)。
第二行包含一个长度为 $2N$、仅由 `o` 和 `x` 组成的字符串 $S$。
输出格式
输出两个整数,以一个空格分隔。
第一个整数为最多能组成的对数。
第二个整数为达到这个最大值的方案数,对 $998\,244\,353$ 取模。