tg 37 solution
T1
就是这个题想咋写咋写
随便写,怎么写都行
反正空间\(512MiB\)时间\(6s\)
知道两个事:
\(1.\forall len,j\in N_{+},\prod\limits^{len}_{i=1}i \leq \prod\limits^{j+len}_{i=j}i\)
\(2.\space 20!\approx 2e18\)
于是我们只需要预处理出不溢出范围内所有的\(A_{a_i}^{a_i-len},len\in[3,20]\)即可
然后随便二分都能过了,
对于\(len=1\)显然有一个解,对于\(len=2\)随便二分一下,不能存这两个部分否则空间随便爆
T2
一个构造
知道这样一个事:
\(2|\frac{n}{k}\)成立时首尾两两配对
然后就是\(2\not|\frac{n}{k}\)的时候:
处理前\(3\)行,剩下的就是\(2|\frac{n}{k}\)情况
于是我们分析前\(3\)行
最重要的是构造前三行出一个所有数和相等
构造方法:
\(1\)到\(k\)依次填好
标记中值为\(0\)
这样就是依次\([-\frac{k}{2},\frac{k}{2}]\)
然后\(\frac{k}{2}+2\)到\(k\)填\([-\frac{k}{2},0]\)
这样正好\([-\frac{k}{2},\frac{k}{2}]\)又各出现一次
最后按情况填好就好了
然后无解:
\(1.n=k\)
\(2.2|n\and2\not | \frac{n}{k}\)
优先特判\(k=1\)
T3
扫描线的一个思想
就是挺神奇的一个东西
把所有操作按照类似差分的操作就可以换成单点了
然后就是按照转换操作维护所有操作对于当前点的影响
从前缀和的角度来看实际上所有转换操作的累加实际上就是当前点在这次修改完的高度
然后高度随编号显然单调不降于是上二分
还是“实际上所有转换操作的累加实际上就是当前点在这次修改完的高度”这句话
还有就是数据结构下标含义是操作编号以前的影响,也就是这次操作时这个点的高度
每个点的高度维护的是对的,因为是扫描线
T4
粘完题解就跑路


浙公网安备 33010602011771号