首页 > 其他 > 详细

20160727noip模拟赛zld

时间:2016-07-31 22:02:28      阅读:151      评论:0      收藏:0      [点我收藏+]

技术分享

首先最优策略肯定是这样的:我们取出这个序列中的最大值,然后将整个序列分为左右两部分, 那么我们一定先把左右两部分合起来然后再与这个值合并

那么我们可以得出一个基于最值查询(rmq)的技术分享的算法,但是zld上次出10^6级别的题目时,卡掉了技术分享的算法

所以我们想一个优秀一点的做法,发现这个过程可以简单的用一个单调队列维护,维护单调减的单调栈,就可以O(n)解决这个问题

我们仔细观察会发现更优秀的做法,答案一定是技术分享,但是这个玩意我不会证明

int a[2333333];
int main(){
    FO(seq);
    RI(n); 
    ll ans=0;
    FOR1(i,n)a[i]=gi;
    FOR1(i,n-1){
        ans+=max(a[i],a[i+1]);
    }
    cout<<ans;
}

 

未完待续

20160727noip模拟赛zld

原文:http://www.cnblogs.com/chouti/p/5723926.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!