PROKLETNIK

题目描述:给出\(n\)个数,定义一段连续的数为魔法串是该区间的左右端点值正好是区间的最小值与最大值(最小值可以在左也可以在右,最大值也一样)。\(Q\)个询问,每次询问一个区间\([L, R]\),问该区间的子区间为魔法串的最大长度。

solution
离线所有的询问,现在考虑左小右大的魔法串。然后如果可以维护\(i\)之前的点为左端点的最长魔法串的答案,那么以\(i\)为右端点的询问的答案就是\([L, R]\)取最大值。
问题是如何维护。
因为现在只考虑左小右大的魔法串,所以考虑维护一个单调递增的队列,先考虑\(i\)入队
1、\(i\)不小于队尾。设\(taller[i]\)表示前\(i\)个数比\(i\)大的,且离\(i\)最近的位置,那么队列中在\(taller[i]\)右边的点都可以以\(i\)为右端点,而且\(i\)是当前它们的最优解。(下一个点会解释为什么只有队列中的点才能被更新答案)可以考虑用线段树来维护这个队列中的点的最优解,线段树对应队列的第几个数(即对应队列下标),\(i\)进队。
2、\(i\)小于队尾。这时,队尾不可能再成为魔法串的左端点(因为\(i\)小于队尾,队尾不是最小值),也就是说队尾的答案不会也不能在更新,所以可以把队尾的答案取出,存进另一棵线段树(以队列中的值为下标,即原来数的下标)或树状数组。不断地把队尾取出,直到\(i\)不小于队尾。这时\(i\)不能更新队列中的任何一个数(因为\(i\)不是最大值),所以\(i\)直接进队。
对于以\(i\)为右端点的询问,求出第二棵线段树\([L, R]\)的最大值,以及\(L\)在队列中的位置\(w\),然后求队列的那棵线段树\(w\)之后的最大值,取这两个值的最大值就是答案。

时间复杂度:\(O((Q+n)logn)\)

COCI 2015/2016 Day 8 PROKLETNIK的更多相关文章

  1. 【COCI 2015/2016 #3】Nekameleoni

    题目描述 “这好难啊,我有一个简单点的题,他们解决不了.” AKPAKP有一个长度为nn的线段,这个线段原来染有颜色,AKPAKP只认识kk种颜色.当然原来的颜色也包含在着kk种颜色之间. 可以进行m ...

  2. Dynamics XRM Tools 2015 2016

    Download Link: Dynamics XRM Tools 2015/2016 Overview Dynamics XRM Tools brings you a quality range o ...

  3. 20145225《Java程序设计》 2015—2016年学期课程总结

    20145225<Java程序设计> 2015—2016年学期课程总结 读书笔记链接汇总 1.2016年2月25日 <Java程序设计>课程准备之问卷调查 摘要: 一.你对自己 ...

  4. HeyWeGo小组《Java程序设计》 2015—2016年学期团队项目总结

    HeyWeGo小组<Java程序设计> 2015—2016年学期团队项目总结 题目简介 一个简单的扫雷小游戏,在12*12的方格盘上,首先可以设定雷的个数,然后点击开始程序就会随机布雷,开 ...

  5. COCI 2015、2016 1st round 题解(官方)

    官方题解: 官方代码: Code-KARTE: #include <cstdio> #include <iostream> #include <cstring> u ...

  6. 2015,2016 Open Source Yearbook

    https://opensource.com/yearbook/2015 The 2015 Open Source Yearbook is a community-contributed collec ...

  7. Orchard CRM 更新 - 同时支持 Microsoft Dynamics CRM 2011, 2013, 2015, 2016!

    本版本支持: 使用Orchard 1.8.1 系统 Dynamics CRM 2015 DLL .Net Framework 4.5.2 演示版本: http://www.orchardcrm.com ...

  8. Dynamics CRM 2015/2016 Web API:聚合查询

    各位小伙伴们,今天是博主2016年发的第一篇文章.首先祝大家新年快乐.工资Double,哈哈.今天我们来看一个比較重要的Feature--使用Web API运行FetchXML查询! 对的,各位.你们 ...

  9. Dynamics CRM 2015/2016新特性之七:有了文档模板,打印分析So Easy

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复190或者20160216可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 从CRM 2015 UR1开始, ...

随机推荐

  1. hdu 1500 Chopsticks

    http://acm.hdu.edu.cn/showproblem.php?pid=1500 dp[i][j]为第i个人第j个筷子. #include <cstdio> #include ...

  2. 转:ReportViewer控件使用方法

    a. ReportViewer关联Report1.rdlc的简单呈现b. 对带有报表参数的Report1.rdlc的呈现c. 利用程式生成的DataSet 填充报表d. 调用存储过程 生成DataSe ...

  3. jQuery UI 之 Bootstrap 快速入门

    转载自(http://www.shouce.ren/example/show/s/6444) 1. 下载 这个页面是用来展示 jQuery UI Bootstrap 项目的 -- 我们将 Bootst ...

  4. Java Keyword -- super

    Reference: super When we override superclass's methods, but still want to invoke them, we can use ke ...

  5. LeeCode-Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  6. android 分享到新浪微博

    分享到新浪微博,折腾了大半个月,现在终于弄出来了,心里的那个爽呀,太痛快了,哈哈!! 废话少说,首先是认证, 1.进入新浪微博提供的开放平台注册新浪账号. 2.点击’我是开发者‘,创建一个应用,得到C ...

  7. python-MySQL库简单安装

    1  raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_c ...

  8. Android Studio代码自己主动提示无效(not available in Power Save mode)

    针对一位博友提的问题,我这边写出来,预计还是非常多人会碰到这个问题,可是不知道怎样解决的. 就是在设置了代码自己主动提示功能后,发现不生效的,怎样设置代码自己主动提示请戳这:Android Studi ...

  9. c# 图片简单模糊 非高斯模糊

    /// <summary>        /// 图像模糊化        /// </summary>        /// <param name="bit ...

  10. H5单页面架构:自定义路由 + requirejs + zepto + underscore

    angular优点: 强大的数据双向绑定 View界面层组件化 内置的强大服务(例如表单校验) 路由简单 angular缺点: 引入的js较大,对移动端来说有点吃不消 语法复杂,学习成本高 backb ...