AT_agc057_e 题解
[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\) 的关系并没有那么紧密,因为只需要保证
\]
即可。
[4] 参考资料
E - RowCol/ColRow Sort Editorial by evima
AT_agc057_e 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 机器学习策略篇:详解处理数据不匹配问题(Addressing data mismatch)
处理数据不匹配问题 如果您的训练集来自和开发测试集不同的分布,如果错误分析显示有一个数据不匹配的问题该怎么办?这个问题没有完全系统的解决方案,但可以看看一些可以尝试的事情.如果发现有严重的数据不匹配问 ...
- 题解:P10722 [GESP202406 六级] 二叉树
题意 一颗 \(n\) 节点的二叉树,每个节点非黑即白,给你 \(Q\) 次操作,每次给你一个 \(u\),把 \(u\) 的子树内所有节点颜色反转,问最终每个节点的颜色. 分析 看到数据范围,首先把 ...
- 使用JavaScript编写vue指令v-model,v-model原理实现
首先先要知道的是v-model的作用是实现数据的双向绑定,即: 数据在视图层的双向响应. 实现思路主要分为两步: 第一步:数据层到视图层的响应 将数据响应到视图层的方式,在vue2使用的是Object ...
- c++ 中遇到的语法问题
在头文件中给函数赋值 如这样: func(int a,int b = 1); 在.cpp文件中不能同时这样写,否则会报错,只能这样写func(int a,int b ),所以从其他地方移植的代码需要注 ...
- JAVA课后谈1
1.课程中动手动脑的问题 在本次课堂实验中,我暴露出了很多问题,尤其是逻辑思维方面,不能很好的处理数理运算问题.在实际生活中客户的要求千变万化,而我们作为一个合格的程序设计者应该顺应其要求,尽可能的去 ...
- c# 多线程环境下控制对共享资源访问的办法
Monitor: 定义:Monitor 是 C# 中最基本的同步机制,通过 Enter 和 Exit 方法来控制对共享资源的访问.它提供了排他锁的功能,确保在任何时刻只有一个线程可以访问共享资源. 优 ...
- SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴
开心一刻 一大早,她就发消息质问我 她:你给我老实交代,昨晚去哪鬼混了? 我:没有,就哥几个喝了点酒 她:那我给你打了那么多视频,为什么不接? 我:不太方便呀 她:我不信,和你哥们儿喝酒有啥不方便接视 ...
- docker dockerfile基础指令
dockerfile是用来构建docker镜像文件!命令参数脚本 构建步骤 1.编写一个dockerfile文件 2.dockerbuild构建成为一个镜像 3.docker run运行镜像 4.do ...
- 【SpringMVC】10 对Ajax的应用
编写一个AjaxController package cn.dai.controller; import org.springframework.web.bind.annotation.GetMapp ...
- WPF【无限滚动图片浏览】自定义控件
自定义控件 自定义控件是我比较陌生的一个主题.我好久没练习过wpf了,需要巩固记忆.我想了一会儿,打开动漫之家,忽然觉得这个看漫画的图片浏览控件有意思.于是特地花了一天做了这个图片控件.我原本以为很容 ...