2016.07.16【初中部 NOIP提高组 】模拟赛C

17 篇文章 0 订阅
3 篇文章 0 订阅

题目:https://jzoj.net/senior/#contest/home/1753


T1:大大的水题。只要能读懂题目,明白符号的意思,照题目要求你做的模拟就行了。


T2:听说可以用堆,但听得并不是很明白,所以就讲一下考试时的方法。我是用二分,考试时却因为r的边界被坑了10分。。

正解:二分当前的最短时间t,那么烘衣机也可以用t时间,然后判断当前第i个衣服如果在第t时间内不能自己烘干,则用烘衣机烘——判断烘衣机烘需要烘几次,然后判断烘这么多次是否总数可以在t时间内完成。


T3:两种方法:

第一种:二分当前第i头牛往顺时针选mid个,然后如果顺时针选Mid个大于剩下的数的总和的话,则把r改小,否则把L改大,然后l,r是l+1<R的时候才二分。最后判断是往顺时针选l个优还是L-1个优就可以了。

第二种:用队列的方法。每次选第i个数,然后如果选了第i个数之后大于总和/2则把队首抽出,以此类推,每次选第i个数的时候都判断当前的最优情况即可。


T4:看数据很明显是O(n)或O(nlogn)之类的方法,但现在已知解法竟是O(n²)的。难道O(10000000000)会对?没错,只要从后往前搜,加些小优化,O(1000000000000000)都可以对(Ps:实际上O(n³)并没有O(1000000000000000)这么多)


正解:从后往前枚举终点的位置,并且记录当前从后往前搜的最小值(用min来维护),如果当前选第i个数为起点时,第i个数是当前所有位置的最小值则记录ans,并更新min,否则什么都不做。(PS:小优化就是如果当前第i个数大于终点就退出)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值