2017.08.15【NOIP 普及组】模拟赛C组总结

T1 猴子吃桃

这道题明显是道水题嘛。。。考试的时候没有注意C>=N*2的情况,结果只拿到了10分。。。

总结:细心。

T2 猴子拆房

比赛时就是暴力枚举最高点,再把比它高的拆掉,比它矮的按价钱从小到大拆,直到合法,再求最小花费。比赛时不小心打错一个参数,只拿了15分,更正后时超45。
后来讲题时听邓老师讲了什么堆优化,听得我头晕,也就没改出来。

总结:还是细心。

T3 猴子除草

一开始我没想出正解,就直接暴力枚举最大点,再更改,错的很惨。
后来又是听胡明翰同学讲了堆优化,打不正确,再后来邓老师讲了二分解法,先二分天数,在判断是否合法,听完后恍然大悟,五分钟内便做了出来。

总结:一种解法打不出来,思考有没有另一种解法。

T4 猴子上树

这道题一看就是DP。
状态不难想到:f[i,j]表示前i只猴子爬上前j棵树的答案。
可以轻而易举的想到转移方程:f[i,j]:=min(f[i-1,j-1],f[i-1,j])+abs(a[i]-b[j]);
大家先把所有的f[i,1]算出来,否则会错,f[i,1]:=f[i-1,1]+abs(a[i]-b[1]);
测试了一下内存,并没有超,可后来发现要开int64!内存就超了。
(鄙视题目空间限制)
想来想去,忽然想到一个地方可以压缩内存
因为一个f[i,j]的答案只和f[i-1,j-1]和f[i-1,j]有关
f[i-1,j-2],f[i-1,j-3]都与f[i,j]无关
那么我们的数组只用开[1..5000,0..1]就可以了
f[i,j mod 2]:=min(f[i-1,j mod 2],f[i-1,(j-1)mod 2])+abs(a[i]-b[j])
循环利用空间
最后输出f[n,m mod 2]

总结:注意时空复杂度。

T5 魔法阵

比赛时打了个n^4的算法,时超45。
后来听某神犇讲了一大堆听不懂的东西,虽听不懂但我却记下来了他画的图,慢慢的便理解了。最后轻松AC。

总结:画图帮助思考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值