NOIP2014 写后感


差不多距离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]+k)

其中
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?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值