A116450.墓穴探险(tomb)

提高+/省选-

官方

通过率:0%

时间限制:1.00s

内存限制:512MB

题目描述

小向很喜欢玩单机游戏《古墓丽影》,他扮演一个考古学家劳拉在全球各个墓穴探险。其中一个游戏关卡是在一个法老王的墓地探险的过程中,有一个谜题,他试了一整天才解决这个谜题。

谜题是有一个 nnmm 列的矩阵,每个格子都有一个数字,数字的数值在谜题的一开始都是 00,在矩阵的每行每列都对应有一个可以旋转的按钮,左旋一次这个按钮就可以使得对应行或列矩阵内的所有数字减 11,右旋一次则可以使得对应行或列的矩阵内的所有数字加 11

游戏关卡内另外有一些 kk 条提示线索,每个线索要求 iijj 列的格子中最终的数字是 xx,对于没有提示的格子,那些都与谜题无关,可以不关心它的最终数字。

小向花了九牛二虎之力才解开这个谜题,于是他兴奋的向小李吹嘘自己的聪明才智。小李却不屑一顾,认为用最少的操作次数解开才是真正的高手。

于是小李把谜题抽象成若干组数据,需要小向用程序输出最少的左旋/右旋次数。不过小李也很懒,他设置的谜题数据是完全随机的,有时会出现无解的情况,那么对应输出字符串 "No" 即可。

输入格式

每个测试点包含多组测试数据。

输入的第一行是一个正整数 tt,表示测试数据的组数。

每组测试数据的第一行包含三个正整数 n,m,kn,m,k 分别表示矩阵的行数、矩阵的列数、谜题的提示数。

接着 kk 行,每行三个数字 i,j,xi,j,x,表示一组线索,要求最终 iijj 列的格子内的数字是 xx

输出格式

每组测试数据输出 11 行,如果有解,则输出最少的操作次数,如果无解,输出 "No" 即可。

输入输出样例

  • 输入#1

    2
    2 2 4
    1 1 0
    1 2 0
    2 1 2
    2 2 2
    2 2 4
    1 1 0
    1 2 0
    2 1 2
    2 2 1

    输出#1

    2
    No

说明/提示

样例 1 解释

输入包含 22 组测试数据。

第一组测试数据谜题的目标如下:

0 0
2 2

操作 22 次第二行的按钮,每次加 11,就可以满足题目条件。明显没有更优的方案。

第二组测试数据谜题的目标如下:

0 0
2 1

每次操作之后,一定是两个格子的数字发生了加 11 或者减 11,所以矩阵内所有数字之和一定是偶数,但是目标的所有格子的之和是奇数(0+0+2+1=30+0+2+1=3),所以必然无解。

附件

更多样例请查看:tomb test.zip

数据范围

对于所有测试数据有:

1t51 \le t \le 5

1n,m10001 \le n,m \le 1000

1kn×m1 \le k \le n \times m

1in1 \le i \le n

1jm1 \le j \le m

x105|x| \le 10^5

保证两两不同的线索之间的网格均不同。

保证每个测试点的 kk 之和不会超过 2×1062 \times 10^6

测试点 n,mn,m \le 特殊性质
1~3 10
4 10 x=1x=1
5~7 50
8 50 n=1n=1
9~12 100
13 100 k=1k=1
14 500 n=1n=1
15~16 500 x=ix=i
17~20 1000
首页