Bootstrap

csp-s模拟测试53

期望得分:61+?+37

实际得分:61+21+14

 

A. u

难度评估错误,放弃去想正解和一闪而过的二维前缀和,以为很不可打,于是打了61部分分。

然而这是三道题里最简单的。

正解:差分+二维前缀和

考虑如何二维差分,实际上就是硬凑,假设并验证所有块的差分前缀和是否正确。

+1  -1

  +1  -1

    +1  -1

-1      +1

得到如上。

然后对对角线做差分,做前缀和转化得到二维差分,再做二维前缀和得到原矩阵。

妙啊,秒啊

 

 

B. v

考场上不会状压dp转移,正序倒序入度出度一直不能区分。

记忆化搜索,递归转移,相当于倒序。这样式子也很好写。

100%也是这个思路,只是优化状态数。

不记录每个位置存不存在,转而记录球的颜色。

用哈系表可以做到。

注意到:

000101状态不唯一,可能是2B2W,1B2W......

为了区分,加入轮数的信息。

在最高位打标记1,这样每一轮标记的位置不同。

 

 

C. w

考试上秒了第一问,第二问猜了个结论。

一开始没有看见后两个样例(好几次了啊喂),码完去盯了一个小时T2

9点多看到发现过不去第三个,把自己hack了,心态爆炸。

 

正解:

第一问是缩完边后奇数点个数/2,之前的结论(然而我缩边打炸了)

但用老路子求出第一问对第二问没帮助。

设二元组f[u][0/1]={c1,c2}表示u向fa出不出边,子树中有c1个奇数点,c2条经过边。

之后进行子树合并dp,相当于做背包。

然后对父亲边分类讨论,更新f[u][0/1]

 

背包正确性:

由于没有要求最长链最短之类,那么哪两条链合并是无所谓的,我们只要关心有没有合并,记录有没有多出来的线头。

 

转载于:https://www.cnblogs.com/hzoi-yzh/p/11604121.html

;