CF256E.Lucky Arrays

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

Little Maxim 非常喜欢有趣的问题。他决定和你分享这样一道题。

最开始有一个长度为 nn 的数组 aa,所有元素都为 0。数组的下标从 1 开始。接下来有若干次修改操作,每次操作用两个整数 vi,tiv_i, t_i 描述。对于每次操作,你需要将数组中第 viv_i 个元素赋值为 tit_i,即 avi=tia_{v_i} = t_i,其中 1≤vi≤n1 \leq v_i \leq n。

Maxim 认为某些整数对 (x,y)(x, y) 是“好”的,某些则不是。他认为:如果一个长度为 nn 的整数数组 aa,对于所有 ii(1≤i≤n−11 \leq i \leq n-1),都满足 (ai,ai+1)(a_i, a_{i+1}) 是“好”的整数对,则称数组 aa 是“幸运的”。需要注意,数对的顺序很重要,例如 (1,2)≠(2,1)(1,2) \ne (2,1)。

每次修改操作后,Maxim 都想知道:有多少种方案,可以将数组 aa 中所有的 0 都替换成 1 到 3 之间的整数(每个 0 可以替换成不同的数),使得最终得到的数组(不含 0 时)是“幸运的”。

Maxim 会把所有的修改操作和他认为“好的”整数对都告诉你。请你帮他解决这个问题。

输入格式

第一行为两个整数 nn 和 mm,表示数组的长度和操作次数,1≤n,m≤777771 \leq n, m \leq 77777。

接下来的三行表示矩阵 ww,每行有三个只包含 0 和 1 的整数,第 ii 行第 jj 个数为 wi,jw_{i,j}。若 wi,j=1 (1≤i,j≤3)w_{i,j} = 1\, (1\leq i, j \leq 3),则数字对 (i,j)(i, j) 是“好”的,否则不是。矩阵不一定关于主对角线对称。

接下来 mm 行,每行包含一组整数 vi,ti (1≤vi≤n,0≤ti≤3)v_i, t_i\, (1\leq v_i \leq n, 0\leq t_i\leq 3),表示一次修改操作。

输出格式

输出 mm 个整数,第 ii 个整数表示经过第 ii 次修改后,将所有的 0 替换成 11 至 33 之间的整数,使得最终数组为“幸运的”不同方案数。用空格分隔。由于答案可能很大,请对 777777777777777777 取模后输出。

输入输出样例

  • 输入#1

    3 10
    1 1 0
    1 0 0
    1 1 1
    1 1
    1 3
    2 2
    3 0
    2 1
    3 0
    3 1
    2 0
    3 1
    1 0
    

    输出#1

    3
    6
    1
    1
    2
    2
    1
    3
    3
    6
    

说明/提示

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页