[0] 约定

\(r_i = \sum\limits_{j = 1}^{m}[A_{i,j}\le k]\)

\(r^{'}_i = \sum\limits_{j = 1}^{m}[B_{i,j}\le k]\)

\(c_j = \sum\limits_{i = 1}^{n}[A_{i,j}\le k]\)

\(c^{'}_j = \sum\limits_{i = 1}^{n}[B_{i,j}\le k]\)

[1] 分析思路

[1.1] 分析操作

对于 \(A\),若 \(\forall k,\{r_i|i\in[1,n]\} = \{r^{'}_i | i\in[1,n]\}\),则先行再列的排序后 \(A=B\)。

同理,若 \(\forall k,\{c_j|j\in[1,m]\} = \{c^{'}_j | j\in[1,m]\}\),则先列再行的排序后 \(A=B\)。

由此,确定 \(10\) 对排列 \(p_{1\sim n},q_{1\sim m}\),满足对于第 \(k\) 对排列,排序后 \(r_i = r^{'}_{p_i},c_i = c^{'}_{q_i}\)。

[1.2] 转化限制

对于每对排列单独考虑,需要满足 \([A_{i,j}\le k] = [B_{p_i,q_j}\le k]\)。

对于 \(k\) 相邻的两对排列,需要满足 \(B_{p_i,q_j}\le k \rightarrow B_{p\circ p^{'}_i,q\circ q^{'}_j}\le k + 1\)。

更进一步,\([B_{i,j}\le k] = [j\le r'_i] = [i\le c'_j]\)。

于是有 \(P:\forall i, j,j\le r'_i, p_i\le c'_{q_j}\)。

排序,使 \(c',r'\) 单调不增(以下写作 \(c,r\))。

\(P:\forall i, p_i\le c_{\max\limits_{j = 1}^{r_i}q_j}\)

发现只要符合 \(P\) 的排列就可以组合在一起。

[2] 如何计数

[2.1] DP 方程

发现需要计数的是满足以下条件的排列:

\(x_i = \max\limits_{j = 1}^{a_i}q_j\le m\)

\(p_i\le c_{x_{i}}\le n\)

考虑 DP 计数。

考虑与 树上异或 相似的分阶段计数。

令 \(f_{i,j}\) 代表 \(p_{1\sim i}\) 已确定,\(q_{a_{i} + 1\sim m}\) 已确定,且 \(x_i = j\) 的方案数。

发现可以在 \(f_{i - 1, j} \to f_{i,j}\) 的过程中计算 \(p_i\) 的贡献 \(j - (i - 1)\)。

可以在 \(i - 1\to i\) 的过程中计算 \(q_{a_{i} + 1\sim a_{i - 1}}\) 的贡献,用组合数算即可。

[2.2] 细节

就是无解或得到负数的情况。

[3] 后记

[3.0] 注意

以下全为作者自己口胡的,不要看,不要看!很可能是错的

[3.1] 正文

好的,让我们从头开始。

考虑排序对 \(A\) 造成的影响,发现比较难想。

发现 \(B\) 必然已经有序。

减少限制,若 \(A_{i,j}\in[0,1]\)。

[3.1.2] 约定

\(r_i\) 代表第 \(i\) 行 \(1\) 的个数。

\(c_j\) 代表第 \(j\) 列 \(1\) 的个数。

结论:

若可重集 \(r_A=r_B,c_A=c_B\) 那么排序后 \(A,B\) 相同。

证明:

考虑排序对 \(A\) 造成的影响。

先行再列,相当于对 \(r_i\) 排序。

先列再行,相当于对 \(c_j\) 排序。

回到原题,\(A_{i,j}\in[0,9]\)。

[3.1.3] 约定

\(r_{k,i}\) 代表第 \(i\) 行 \([A_{i,j}\le k] = 1\) 的个数。

\(c_{k,j}\) 代表第 \(i\) 行 \([A_{i,j}\le k] = 1\) 的个数。

再次考虑排序的意义,发现因为对于每个 \(k\),将 \(A\) 中元素视为 \([A_{i,j}\le k]\in[0,1]\),发现对于每个 \(k\) 排序得到的最终 \(A_{k}'\) 与 \(A_{i,j}\in[0,1]\) 的情况等价。

考虑通过 \(k\) 个 \(A_{k}'\) 还原 \(A'\),若 \(A_{k,i,j}'\) 为 \(1\) 说明 \(A'_{i,j}\le k\),同理 \(0\) 代表 \(A'_{i,j}>k\)。

直接计数应该也可以,但明显时间复杂度有问题。

发现 \(k\) 与 \(k + 1\) 的关系并没有那么紧密,因为只需要保证

\[\forall i\in[1,n],j\in[1,m],k\in[1,9],r_{k,i}\ge r_{k-1,i},c_{k,j}\ge c_{k-1,j}
\]

即可。

[4] 参考资料

E - RowCol/ColRow Sort Editorial by evima

AT_agc057_e 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. MYSQL DQL in 到底会不会走索引&in 范围查询引发的思考。

    前情引子 in 会不会走索引?很多人肯定会回答.废话.如果命中了索引.那肯定会走. 其实我和大多数人一样.一开始也是这么想的.直至有一个血淋淋的案子让我有所改观.有所思考. 背景介绍 业务的工单表.我 ...

  2. Notepad++实现代码格式化

    NotePad++是一个轻量级的代码编辑器,占用内存少,运行速度快,Notepad++本身是不带这个格式化功能的,但他支持NppAStyle插件完成格式化. 1. 下载插件NppAStyle.dll, ...

  3. sed 进阶使用

    sed 进阶使用 工作原理 sed 维护两个数据缓冲区: 活动模式空间 和 辅助保持空间 两者最初都是空的 sed 通过对每一行输入执行以下循环进行操作 从输入流中读取一行,删除任何尾随的换行符,并将 ...

  4. gist.github.com 无法访问解决办法,亲测永远有效!

    1.打开https://www.ipaddress.com/,输入gist.github.com获取IP地址 2.ping 此ip地址,可以访问 3.将IP地址写入Hosts文件,140.82.113 ...

  5. 这本vue3编译原理开源电子书,初中级前端竟然都能看懂

    前言 众所周知vue提供了很多黑魔法,比如单文件组件(SFC).指令.宏函数.css scoped等.这些都是vue提供的开箱即用的功能,大家平时用这些黑魔法的时候有没有疑惑过一些疑问呢. 我们每天写 ...

  6. Jmeter函数助手2-Random

    Random函数用于获取随机范围内的正整数或负整数. 一个范围内的最小值:必填,且必须填入整数(正负数都可以) 一个范围内允许的最大值:必填,且必须填入整数(正负数都可以).最大值需大于最小值如[-6 ...

  7. Jmeter的安装(Windows)

    1.选择和本机JDK兼容的jmeter版本下载 Jmeter历史版本下载地址:https://archive.apache.org/dist/jmeter/binaries/ 此处我的jmeter5. ...

  8. 【JavaWeb】HttpClient

    需要的依赖: <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <de ...

  9. 【JavaScript】无框架翻页处理

    这个业务太复杂了 输入框的东西要用接口查出来,居然不是用户手动输入 然后我就要做一个翻页的查询列表: <div form id="troublePartSearch" sty ...

  10. 【JavaScript】下拉联动回显问题

    首先是多级下拉联动实现: 这是DOM结构: <div> <label style="margin-left: 10px;display: inline-block;&quo ...