题解:

首先想到了标算。。然后证明了一发是错的(事实证明很智障)

先说正确性比较显然的O(n^2)算法

令f[i][j]表示前i个物品,匹配到第j个括号,最大值是多少

g[i][j]表示前i个物品,匹配到第j个括号,最小值是多少

然后这个转移是O(1)的 状态是n^2的

被状态局限了就没法优化了

标算:

令f[i]表示取第i个的情况下最大到达的位置,f[i+1]由f[ 1-----i ]转移

我们来证明一下这个的正确性

原命题:每个f[i]一定是由前面某个f[j]转移过来

逆命题:其中有一个f[i]是由j的某个非最优状态转移而来

既然f[i]由j的某个非最优状态转移,那么f[j]+1这个符号一定与a[i],a[j]的大小不符

举个例子 a[i]是3 a[j]是4 大小关系是>><

现在f[j]=2,即下一位要求a[j]<a[i] 所以a[i]和a[j]不满足要求

那么一定是由前面一个>转移的(因为满足a[j]>a[i])

那我们看一下f[j]是怎么来的 前面一定有个k满足a[k]>a[j]

那么a[k]>a[j]>a[i] 这样 f[i]一定是可以从a[k]转移而来的

原命题得证

然后有了这个dp方程显然线段树优化一下就可以了

#14 [BZOJ2090/2089] [Poi2010]Monotonicity 2/Monotonicity的更多相关文章

  1. [BZOJ2090/2089] [Poi2010]Monotonicity 2/Monotonicity 树状数组优化dp

    这个dp乍看不科学,仔细一看更不科学,所以作为一个执着BOY,我决定要造数据卡死波兰人民,但是我造着造着就......证出来了......... 这个就是把 < > =分开讨论每次找到f[ ...

  2. 【BZOJ2090/2089】[Poi2010]Monotonicity 2 动态规划+线段树

    [BZOJ2090/2089][Poi2010]Monotonicity Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度 ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. BZOJ2090: [Poi2010]Monotonicity 2【线段树优化DP】

    BZOJ2090: [Poi2010]Monotonicity 2[线段树优化DP] Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. ...

  5. BZOJ2090 : [Poi2010]Monotonicity 2

    设f[i]表示以i为结尾的最长的合法序列的长度,=号直接维护,<号和>号用两棵树状数组维护即可,时间复杂度$O(n\log n)$. #include<cstdio> #def ...

  6. [补档][Poi2010]Monotonicity 2

    [Poi2010]Monotonicity 2 题目 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. 选出一个长度为L的子序列(不要求连续),要求这个子序列 ...

  7. Monotonicity 2[POI2010]

    题目描述 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1 ...

  8. [Poi2010]Monotonicity 2 线段树

    这道题考试的时候先打了个dfs暴力.又打了个O(n²)的动规.然后竟然心血来潮拍了一下..明明知道过不去的...然后水了50分(20个测试点这么多啊啊啊啊). 因为它已经提前给你如果长度为i时下一位的 ...

  9. Poi2010 Monotonicity 2

    树状数组优化dp 可以证明最优解一定是通过之前的最优转移过来的,所以每一个点只需要保存以该节点为结尾的最长长度即可 对于不同符号,等于号维护数组,大于小于维护树状数组 #include<cstd ...

随机推荐

  1. Matplotlib中plt.rcParams用法(设置图像细节)

    import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap %mat ...

  2. JavaScript 从入门到放弃(一)事件委托和使用innerHTML添加元素

    一.使用事件委托 一个简单的需求,比如想给ul下面的li加上点击事件,点击哪个li,就显示那个li的innerHTML.这个貌似很简单!代码如下! <!DOCTYPE html> < ...

  3. WorkerMan 入门学习之(三)基础教程-Timer类的使用

    1.ServerTimer.php 代码: <?php /** * 定时器学习 */ require_once __DIR__ . '/Workerman/Autoloader.php'; us ...

  4. .NET面试题系列(十)委托与事件

    委托 有了委托的存在,使得方法可以作为参数传递给另一个方法. int Max(int x,int y) { return x>y?x:y; } int Min(int x,int y) { re ...

  5. HTML5 CSS JavaScript在网页中扮演的角色

    HTML (content layer) CSS (presentation layer) JavaScript (Interactive layer) 参考链接: [1] https://www.y ...

  6. python线程之condition

    cond = threading.Condition() # 类似lock.acquire() cond.acquire() # 类似lock.release() cond.release() # 等 ...

  7. JavaScript练习 - 正反选练习

    正反选练习 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. 2018-2019-2 网络对抗技术 20165230 Exp6 信息搜集与漏洞扫描

    目录 1.实验内容 2.实验过程 任务一:各种搜索技巧的应用 通过搜索引擎进行信息搜集 搜索网址目录结构 使用IP路由侦查工具traceroute 搜索特定类型的文件 任务二:DNS IP注册信息的查 ...

  9. pl sql 存储过程 执行sql 锁死状态

    背景 这是在一个不知如何表达的项目中,我在这个项目中做的就是不知如何表达的事情.只是想着技术,到是通过这个项目把存储过程基本能用的都用了,oracle开发的技术我感觉基本都全活了.别人没搞定的我搞定了 ...

  10. CSS导航条nav简单样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...