luogu#P8221. [WFOI - 02] I wanna reverse to reserve(翻转)

    ID: 12216 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>洛谷原创Special JudgeO2优化构造洛谷月赛

[WFOI - 02] I wanna reverse to reserve(翻转)

题目背景

君子不器

“我最擅长解谜了,你说是吧,kid。”

“嗯...”

题目描述

kid 走进了一个 nnmm 列的矩阵,保证矩阵中有 nn 个数字 11nn 个数字 22\dots , nn 个数字 mmn,mn,m 均为偶数。

现有两种改变矩阵的方式:

  • 选择任意一行,将这一行上的数翻转;
  • 选择任意一列,将这一列上的数翻转。

每次操作可以选择任意一种方式。

现在需要通过若干次操作,将矩阵变为:

$$n\;行\left\{ \begin{array}{l} 1\quad2\quad3\quad\cdots\quad m\\ \\ 1\quad2\quad3\quad\cdots\quad m\\ \\ \cdots\\ \\ 1\quad2\quad3\quad\cdots\quad m\\ \end{array} \right. $$

这样才会出现下一个存档点。

你需要帮 kid 解决这个问题。

你只需要给出答案,剩下的操作就交给 Uvocde 吧!

输入格式

第一行两个正整数 nnmm,以下 nn 行,每行 mm 个正整数,表示该矩阵。

输出格式

第一行一个字符串,若不可能有可行的操作方式,则输出 NO,否则输出 YES

如果输出 YES,下一行输出一个非负整数 ansans,表示一种共需要 ansans 次操作。接下来输出 ansans 行,每行一个字符和一个数 kk(中间有空格),这个字符表示这一次操作是翻转行还是翻转列,若是对某一行进行翻转则为 0,若翻转某一列则为 1kk 表示翻转第几行或是第几列。

若存在可行方案,则只需输出一组可行解即可(不需要使 ansans 最小),但你要使 ansn×mans \le n \times m

本题采用 SPJ\text{SPJ},只要翻转操作正确即可给分。

2 4
1 2 3 4
4 3 2 1
YES
1
0 2
2 4
1 2 3 4
4 1 3 2
NO

提示

【数据范围】

本题采用 Subtask 捆绑测试

  • Subtask #0 (20pts)\texttt{Subtask \#0 (20pts)}:最多只有 22 个数不在规定位置上;
  • Subtask #1 (20pts)\texttt{Subtask \#1 (20pts)}n=2n=2
  • Subtask #2 (20pts)\texttt{Subtask \#2 (20pts)}m=2m=2
  • Subtask #3 (40pts)\texttt{Subtask \#3 (40pts)}1n1001\le n\le 1001m1001\le m\le 100

全部数据满足 1n1001\le n\le 1001m1001\le m\le 100