NOIP2014 写后感

来源:互联网 发布:linux创建多层目录 编辑:程序博客网 时间:2024/06/05 19:57


差不多距离NOIP还有不到一个月的时间,争取每天做一道noip的题来练习一下手感,这两天+之前写的,把noip2014的题给搞掉了,noip2015的斗地主一直没写,决定找个时间再搞一搞
14年的题两天的T1都是水到不能再水的题目,day1直接模拟,day2看一眼数据范围直接枚举,都是随便过的题,不表
Day1 T2是一道很简单的树形DP,考虑DP到x时,产生贡献的点对是x的父亲与x的儿子,以及x的各儿子之间,所以存一下父亲的权值,遍历过的儿子的权值和与最大权值,直接做就可以了,复杂度O(n)
Day2 T2的具体想法就是把图反向建边跑一遍bfs,标记一下终点所能到达的点,然后在原图上的被标记的点跑bfs就可以了
一开始觉得反向建边写起来不优美,所以乱搞了一发,只搞了30分,后来还是老老实实地反向建边,没有1A很不高兴(。•ˇ‸ˇ•。)
其实这也提醒我,如果真的是在考场上想到了一个题的做法,在正确性保证而且代码量又不大的情况下,不要在没A之前就去想着怎么优化,先保证正确!再考虑常数!最后考虑代码的优美!
Day1 T3是一道类似背包的DP,具体方程是

f[i][j]=min(f[i1][j+Yi1],f[i1][jkXi1])

其中
j(L[i],H[i]),jkXi1>0

显然直接转移复杂度是O(n3)
但我们发现这个东西很像一个多重背包,所以改一下转移方程就是
f[i][j]=min(f[i1][j+Yi1],f[i1][jXi1],f[i][jXi1])

由于是背包问题,所以要把f[i1][j+Yi1]的转移放到最后再做,
而且j=m时要不再是只枚举去Xi1,而是依次枚举减去[0,Xi1],因为最高高度是m
j<m时转移是O(1)的,j=m时转移是O(m)的,总复杂度O(nm)
Ps
一开始有些脑抽,绕了些弯子,没有考虑背包转移的顺序问题……
Day2 T3很早之前写过
传送门
思路很巧妙,如果我在考场上是不会写这样的,因为就算想出了正解也不敢写
估分500~550?

0 0
原创粉丝点击