csp-s模拟测试53

指望得分:61+?+37优化

实际得分:61+21+14ui

 

A. u

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

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

正解:差分+二维前缀和io

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

+1  -1搜索

  +1  -1hack

    +1  -1样式

-1      +1co

获得如上。

而后对对角线作差分,作前缀和转化获得二维差分,再作二维前缀和获得原矩阵。

妙啊,秒啊

 

 

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]

 

背包正确性:

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

相关文章
相关标签/搜索