模拟32 题解
A. chinese
要求的答案是所有情况总的炼字个数。
观察到题中k的范围比较小,所以对k下手。
枚举炼字的大小,限制与它同一行同一列的数的大小,其它数随便选就可以了。
直接快速幂,$O(klogmod)$可过。
写的帅一点,弄个线性筛,直接推一些东西,复杂度就变成$O(\frac{klogmod}{lnk})$了,可以近似认为$O(k)$
B. physics
正向处理比较难搞,因为答案会不断变小,无法确定下一个答案到底在哪里。
离线读入所有修改,时光倒流处理答案。
好处是答案只会不断变大,也就是说可以直接取$max$。
处理方式是:
维护出$n^2$个点向上向下最多延伸的1的个数,分别计为$up,down$。
如果指定某一行,指定答案的大小,可以用单调队列$O(n)$检验是否合法。
对于每次修改,影响的只有一列上的数的$up,down$。
对于每次修改,如果答案会被更新,也就一定会被修改所在行能计算出的最优答案更新。
记录答案是多少,因为单调不降,直接不断尝试更新就可以了。
C. chemistry
期望dp,意思大概是维护1~k次方的期望值,然后就能dp了??
不会做。