Codeforces Round #703 (Div. 2) Guessing the Greatest C1 C2 二分
link
題意:交互題,每次可以詢問一個區(qū)間的次大值,保證所有值都不相同,求最大值位置。easy是詢問最多40次,hard最多20次。
交互題大部分都是二分,可以向二分考慮。
easy比較好想,假設(shè)當(dāng)前區(qū)間為[l,r][l,r][l,r],中點midmidmid,先查詢[l,r][l,r][l,r],得到次大值的位置pos1pos_1pos1?,假設(shè)pos1<=midpos_1<=midpos1?<=mid,那么就查詢[l,mid][l,mid][l,mid]的次大值得到pos2pos_2pos2?,如果pos1==pos2pos_1==pos_2pos1?==pos2?,那么最大值一定在[l,mid][l,mid][l,mid],否則在[mid+1,r][mid+1,r][mid+1,r]。這樣每次操作兩次,一共lognlognlogn次。
hard怎么做呢?顯然是不能由easy優(yōu)化過來,需要另外思考二分的方式。
考慮如果[l,r][l,r][l,r]的區(qū)間,且次大值在邊界lll或者rrr上,這里假設(shè)次大值在lll處,我們是否可以通過二分找到最大值的位置呢?通過觀察我們可以發(fā)現(xiàn)rrr的位置具有單調(diào)性,假設(shè)最大值在pospospos的位置,那么[l,r](r>=pos)[l,r](r>=pos)[l,r](r>=pos)的區(qū)間,他們查詢結(jié)果都是lll即[l,r][l,r][l,r]的次大值位置,對于[l,r](r<pos)[l,r](r<pos)[l,r](r<pos)的區(qū)間,他們查詢結(jié)果一定不是lll,因為在這些區(qū)間lll位置是最大值。所以可以根據(jù)這個性質(zhì)進(jìn)行二分。
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #703 (Div. 2) Guessing the Greatest C1 C2 二分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P4288 [SHOI2014]信号增幅
- 下一篇: Codeforces Round #70