码迷,mamicode.com
首页 > 其他好文 > 详细

20160727noip模拟赛zld

时间:2016-07-31 22:04:11      阅读:174      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!