模拟61—「交通·小P的单调数列·矩阵·花瓶」
交通
考试的时候一直在想如何给大环计数,然后不会。
实际上可以转化题目,因为一个点有两条入边和两条出边,但是只能选择一条,所以给他们建一个边。
那么新的图也有 \(2n\) 个点(每条边看做一个点), \(2n\) 条边。
并且相邻的点不能选择,因为他们是同一个点的入边或者出边。
所以要在图上选择 \(n\) 个互不相邻的点。
每有一个环,就有两种方案,最后的答案就是 \(2^t\) , \(t\) 是环的个数。
小P的单调数列
考试的时候推出来了正常的方程并写上了树状数组优化,但是没想到 \(j\leq 2\) 。
\(j\leq 2\) 证明就是多选一个数的平均值肯定不如 \(max\) 大。
所以要选择尽量少的段,如果单调递减的很大,那么就需要选择两段(第一段强制递增)。
否则直接选择一段最大的单调递增就行了。
矩阵
一道构造题,并没有足够的时间想。
首先需要有一个 \(n=2\) 的时候的方案,就是不断通过对角线让这一列相等,然后消掉一列。
同理可以解决 \(m=2\) 。
然后整张图只要把前两行,前两列干成 0 ,整张图就可以为 0 。
考虑一个如下图形。

这是一个 3*3的正方形,无论你是用设么操作,他都能抵消掉,所以这6个数的和永远不变。
所以可以根据这个把整个矩形弄成0 。
所以只要用上述 \(n,m=2\) 的操作弄好就行了。
花瓶
显然的 \(dp\) 和斜率优化,但是留给这道题的时间不够,没发现一个地方正负号反了。
首先 \(a_i >0\) 的时候 \(x\) 单减,\(k\) 单增,可以直接反过来做,每个 \(j\) 开一个单调队列。
当 \(a_i\) 不是正数的时候,因为这道题是两维的斜率优化,并且在第一维有显然的转移顺序,所以可以先排序,再操作。
先让 \(x\) 有序,插入到单调队列里面,再让 \(k\) 有序,单调队列统计答案。
这样每次排序,复杂度是 \(n^2logn\) 的。
可以发现顺序其实是不变的,所以直接再外面先排好序就行了。
总结
T1,T2做了很长时间,但是没有想出来。
并且 T1 ,T4 打的暴力还挂了。
(T1我复杂度是 \(20^{10}\) )
本来堆满暴力可以有 30+60+40(我只想了20)+70 ,但是我只拿了60。
因为是暴力,所以没有太注意(事实证明即使我打正解很小心也有大概率挂,暴力不注意就挂残了)
然后又垫底了一场。
T4斜率优化的式子都推出来了,但是错一个正负号一直没发现,最后调试也是一直在乱改而没有想想自己式子错了。
T2有点大意,一直在想如何改变dp定义减少状态,没想推性质减少枚举。
其实知道自己会 TLE 给第二维卡个上界也是不错的选择。

浙公网安备 33010602011771号