线段树,题目感觉比较难,看别人思路做的。还得继续练这个专题。

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define MAXN 100005
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1 int str[MAXN<<], lstr[MAXN<<], rstr[MAXN<<];
int nums[MAXN]; inline int mymax(int a, int b) {
return (a>b) ? a:b;
} inline int mymin(int a, int b) {
return (a<b) ? a:b;
} void PushUP(int l, int r, int rt) {
int mid; str[rt] = mymax(str[rt<<], str[rt<<|]);
lstr[rt] = lstr[rt<<];
rstr[rt] = rstr[rt<<|]; mid = (l+r)>>;
if (nums[mid] < nums[mid+]) {
if (lstr[rt] == mid-l+)
lstr[rt] += lstr[rt<<|];
if (rstr[rt] == r-mid)
rstr[rt] += rstr[rt<<];
str[rt] = mymax(str[rt], lstr[rt<<|]+rstr[rt<<]);
}
} void build(int l, int r, int rt) {
int mid;
if (l == r) {
str[rt] = lstr[rt] = rstr[rt] = ;
return ;
}
mid = (l+r)>>;
build(lson);
build(rson);
PushUP(l, r, rt);
} void update(int x, int c, int l, int r, int rt) {
int mid;
if (l == r) {
nums[x] = c;
return ;
}
mid = (l+r)>>;
if (x <= mid)
update(x, c, lson);
else
update(x, c, rson);
PushUP(l, r, rt);
} int query(int ll, int rr, int l, int r, int rt) {
int mid, ret = ;
if (ll<=l && rr>=r)
return str[rt]; mid = (l+r)>>;
if (ll <= mid)
ret = mymax(ret, query(ll,rr,lson));
if (rr > mid)
ret = mymax(ret, query(ll,rr,rson)); if (ll<=mid && mid<rr && nums[mid]<nums[mid+]) {
ret = mymax(ret, mymin(mid-ll+,rstr[rt<<])+mymin(lstr[rt<<|],rr-mid));
} return ret;
} void output(int beg, int end) {
int i;
for (i=beg; i<end; ++i)
printf("\t%d: l=%d,s=%d,w=%d\n", i, lstr[i], rstr[i], str[i]);
} int main() {
int case_n, n, m;
int i, x, y;
char cmd[]; scanf("%d", &case_n); while (case_n--) {
scanf("%d %d", &n, &m);
for (i=; i<n; ++i)
scanf("%d", &nums[i]);
build(, n-, );
while (m--) {
scanf("%s %d %d", cmd, &x, &y);
if (cmd[] == 'Q') {
printf("%d\n", query(x,y,,n-,));
} else {
update(x, y, , n-, );
}
//output(1, 18);
}
} return ;
}

【HDOJ】3308 LCIS的更多相关文章

  1. 【HDOJ】4729 An Easy Problem for Elfness

    其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...

  2. HDOJ 题目3308 LCIS(线段树,区间查询,区间合并)

    LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. 【HDOJ】【3506】Monkey Party

    DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...

  4. 【HDOJ】【3516】Tree Construction

    DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...

  5. 【HDOJ】【3480】Division

    DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...

  6. 【HDOJ】【2829】Lawrence

    DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...

  7. 【HDOJ】【3415】Max Sum of Max-K-sub-sequence

    DP/单调队列优化 呃……环形链求最大k子段和. 首先拆环为链求前缀和…… 然后单调队列吧<_<,裸题没啥好说的…… WA:为毛手写队列就会挂,必须用STL的deque?(写挂自己弱……s ...

  8. 【HDOJ】【3530】Subsequence

    DP/单调队列优化 题解:http://www.cnblogs.com/yymore/archive/2011/06/22/2087553.html 引用: 首先我们要明确几件事情 1.假设我们现在知 ...

  9. 【HDOJ】【3068】最长回文

    Manacher算法 Manacher模板题…… //HDOJ 3068 #include<cstdio> #include<cstring> #include<cstd ...

随机推荐

  1. 以非root权限安装nginx及运行

    本章主要讲如何在无root权限(包含无sudo权限)条件下于centos命令行中安装nginx以及在大于1024的端口(这里用8080)上运行. 1. 安装 两种方式,一是下载预编译好的rpm包安装, ...

  2. thinkphp 常见问题

    0.写在最前面的不断更新 (1)trace不起作用 A:必须要输出到模板,才会有trace信息 (2)提示“您浏览的页面暂时发生了错误!请稍后再试-” A:检查控制器(看看能进到控制器没有,设断点输出 ...

  3. Asp.net: WebForm基础上构建Mvc的方法

    添加引用: System.Web.Routing System.Web.Abstractions System.Web.Mvc 添加文件夹: Controllers, Views,  Views / ...

  4. [转载]Oracle基础知识

    一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_onins ...

  5. 通过html5的range属性动态改变图片的大小

    range属性已经是很成熟的属性了,我们可以使用这个属性进行动态调整图片的宽度,其中原理在于通过不断获取range的值,并赋予给所需要的图片,进而达到动态改变图片的效果.下面贴出具体的代码,主要参照了 ...

  6. java_泛型(2016-11-17)

    没有自己敲,这篇博客讲的不错,直接记录. 犯懒啊 重点关注 T,?以及擦除 Java总结篇系列:Java泛型:http://www.cnblogs.com/lwbqqyumidi/p/3837629. ...

  7. HDU 1429 胜利大逃亡(续)(DP + 状态压缩)

    胜利大逃亡(续) Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢 ...

  8. vs2013 使用vs调试器,发现调试器显示的数据错误。查看内存,发现内存是正确的。

    有可能只是调试器的问题,程序可以正常运行的! 网上没找到此种情况解释.感觉有可能是那里堆被破坏了.

  9. Binary Tree Level Order Traversal 解题思路 ×

    要求: 树的层级遍历 思路: 1.两个队列,q1 q2 ,root放到q1 2.q1首元素出列,判断是否有左右孩子,有的话,放入q2.(循环此步骤值得q1为空) 3.q1 = q2,重复2,直到q1为 ...

  10. 分享一个自己写的基于TP的关系模型(三)

    这段时间对模型做了升级和优化,并将版本更新到TP3.2. 下载 下载后请将目录放置TP的Library目录下 1.数据节点优化,原来的节点为模型的名称或者表名,现在更新为定义关系的方法名 public ...