2020 CCPC Wannafly Winter Camp Day1

题目链接:https://ac.nowcoder.com/acm/contest/3979

B - 密码学

总结:看了一下题目,突然很好奇队友是怎么这么快过的,要是我写的话好像只会搞个高斯消元了。

队友的做法

把所有的修改操作离线,然后倒序所有的修改,因为每次操作的形式是:把第 (x) 行的数全部加给第 (y) 行,换言之就是 (y'=x+y) 。那么执行撤销操作就需要 (y=y'-x)

高斯消元的做法

每列是独立的,并且每列的变换矩阵还是同一个。单独抽出其中一列,比如只有2个元素。一开始的矩阵为单位矩阵,即每个元素只被自己影响。

(quad egin{bmatrix} 1 & 0 \ 0 & 1 end{bmatrix} quad)

把第1行加给第2行:

(quad egin{bmatrix} 1 & 0 \ 1 & 1 end{bmatrix} quad)

然后把最后的结果 (('P'=41, 'Q'=42))

(quad egin{bmatrix} 41 \ 42 end{bmatrix} quad)

作为常数接在右边,构成增广矩阵

(quad egin{bmatrix} 1 & 0 & | & 41 \ 1 & 1 & | & 42 end{bmatrix} quad)

调用高斯消元接口就可以解出每个变量的值。

解一个增广矩阵的复杂度为 (O(n^3)) ,共 (n) 个增广矩阵,总复杂度为 (O(n^4)) 。但是对于同一个系数矩阵,配上不同常数项形成的增广矩阵,可以使用LU分解法,分解复杂度 $O(n^3) ,回代消元复杂度 (O(n^2)) ,总复杂度为 (O(n^3)) .

H - 最大公约数

打表题,打表可以发现结果,jls也有讲详细的证明。

F - 乘法

题解:给其中一维排序,然后二分答案x,再 (O(nlogn)) 统计有多少个比x小的。记得分正负数讨论,最好的办法是把正数和负数分开存。

I - K小数查询

jls的数据结构题。

A - 期望逆序对

昨天(2020/1/30)的Codeforces刚刚出?统计的方法有点点不同。

原文地址:https://www.cnblogs.com/KisekiPurin2019/p/12244465.html