模拟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了??

不会做。

posted @ 2019-09-03 10:54  skyh  阅读(149)  评论(0编辑  收藏  举报