2021-11-03NOIP模拟赛总结
1.时间安排
T1:7:50—9:43
也是先在T1上卡住,想到线段以及方案数必然就会联系到区间DP,但是状态设置要根据推出的规律设置.按着样例推出一个dp[i]=
2
k
2^k
2k,处理被现线段i包含的线段对目前线段的贡献,但是转移以及相交的情况不好处理,打算重新推DP式,但是时间已经用了一个半小时而且思路也不清晰,就把暴力枚举线段的大法师写好放了
我
是
蒟
蒻
\color{white}{我是蒟蒻}
我是蒟蒻
T2:9:43—9:45
看完题只会处理每个字符变成其他字符的最小代价(其实就是最短路),而把至少连续k个字符变成相同字符的最小代价不会求(应该还是区间DP),看完题就跳过了
T
1
让
时
间
秃
然
宝
贵
起
来
\color{white}{T1让时间秃然宝贵起来}
T1让时间秃然宝贵起来
T3:9:45—11:45
完完整整两小时,结果交上去是个暴力.刚看第一眼觉得是个树形DP(大概是受前面的题影响),然后就陷进去了,设dp[i][op]是以i为节点的子树在i节点选或不选时得到的最大节点数,在dfs里从叶节点回溯时转移状态;但是后来发现深度小的点会对深度大的点产生影响,不满足局部最优得到全局最优的性质,DP就算是不成立了.放弃之后看了看暴力分,有10分大法师和10分特判,就把大法师和分段的特判加了上去
结
果
特
判
最
后
改
成
错
的
了
,
T
A
T
\color{white}{结果特判最后改成错的了,TAT}
结果特判最后改成错的了,TAT
T4:11:45—11:55
其实时间已经不够了,但是这道题是状压想看看是不是熟悉.三行p列的攻击范围,但是攻击模板不是十字,是随机给出的,而且行数很大,想到了炮兵阵地,但是不知道怎么转化,看完就去交本地了
最
后
的
倔
强
\color{white}{最后的倔强}
最后的倔强
2.反思
- 题解看了之后就觉得DP式不好想又难转移,还是不熟练,一直说DP补课也还是一道没写,什么时候能补上啊
- 暴力分少拿了20分,一个是T3的特判被我改错了,一个是T4的小数据我没写到,时间安排还是有问题,T1写的太久了,T3更久
- 状压放在最后没有想到,但是还是没有思路是真的,状压的锅又出来了,DP还没有补完,要死循环了…
3.差距
- T1赛后看完题解5分钟秒了,DP就是把DP式退出来对用到的数据进行优化就可以了,而且DP式也很好理解,就是按左端点排序后,前i条线段的答案,考虑新的线段i+1,无论是否用到,两种情况(用或不用)之和必然是上一个答案的二倍加上第i+1条线段与之前的线段产生的新复杂度,用前缀和就可以解决,因为会与第i+1条线段产生新连通块的线段右端点必然小于第i+1条线段的左端点,所以计算sum[line[i].l-1]就可以算出line[i+1]左侧有多少条线段,根据dfs思想,左侧线段的贡献应为 2 s u m [ l i n e [ i ] . l − 1 ] 2^{sum[line[i].l-1]} 2sum[line[i].l−1],思路不同的原因是,复杂度的新定义没有深度理解,其实还是求不相交线段方案数,但是新定义确实很难理解,以至于枚举线段差分判断有多少连通块
- T2对于最短路的预处理还是懂的,但是区间DP里二维循环被压成一维很难理解,比如应该枚举j<=i-k,但是dp式里变成了i-k–>i的区间转化和i的单点转化取min,这里有些一知半解
- multiset没有用过,但是lis应该看出来的,把lis放到树上,再用multiset维护就是正解,但是码了近两个小时树形DP,有想过lis,但是又想到每一条树的路径上都有被选择的数,lis求不了结果放弃,如果能想到启发式合并把儿子和父亲合并其实就很好想了