更新一个点;

求某个区间的最长连续上升序列;

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308

 #include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 100009
#define mid int m=(l+r)>>1
int num[maxn], lsum[maxn<<], rsum[maxn<<], msum[maxn<<], n, m, p, v, a, b;
void pushup(int o, int l, int r)
{
mid;
if (num[m] < num[m+])
{
lsum[o] = (lsum[o<<] == m+-l) ? (m+-l+lsum[o<<|]) : lsum[o<<];
rsum[o] = (rsum[o<<|] == r-m) ? (r-m+rsum[o<<]) : rsum[o<<|];
msum[o] = max(max(msum[o<<], msum[o<<|]), lsum[o<<|] + rsum[o<<]);
}
else lsum[o] = lsum[o<<], rsum[o] = rsum[o<<|], msum[o] = max(msum[o<<], msum[o<<|]);
}
void build(int o, int l, int r)
{
if (l == r) {lsum[o]= rsum[o] = msum[o] = ; return;}
mid; build(o<<, l, m), build(o<<|, m+, r), pushup(o, l, r);
}
void update(int o, int l, int r)
{
if (l == r) {num[p] = v; return;}
mid; if (p <= m) update(o<<, l, m); else update(o<<|, m+, r); pushup(o, l, r);
}
int query(int o, int l, int r)
{
if (a <= l && b >= r) return msum[o];
mid; int ret = ;
if (a <= m) ret = max(ret, query(o<<, l, m)); if (b > m) ret = max(ret, query(o<<|, m+, r));
if (num[m] < num[m+]) ret = max(ret, min(m-a+, rsum[o<<])+min(b-m, lsum[o<<|])); return ret;
}
int main(void)
{
int t, n, m; char ch[]; scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &m); for (int i = ; i <= n; scanf("%d", num+i++)); build(, , n);
while (m--)
{
scanf("%s%d%d", ch, &a, &b); a++, b++;
if (ch[] == 'Q') printf("%d\n", query(, , n)); else p = a, v = b-, update(, , n);
}
}
return ;
}

。。

hdu3308 线段树——区间合并的更多相关文章

  1. HDU3308 线段树区间合并

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 ,简单的线段树区间合并. 线段树的区间合并:一般是要求求最长连续区间,在PushUp()函数中实 ...

  2. LCIS hdu3308 (线段树 区间合并)

    题意: 有两种操作  一种是单点改为b  一种是给出区间ab  区间ab的最大上升子序列个数.. 线段树目前学了三种  第一种单点操作很简单   第二种区域操作加上懒惰标记即可 现在这种 为区间合并. ...

  3. hdu3308 线段树 区间合并

    给n个数字 U表示第A个数改为B.A是从0开始. Q输出最大的递增序列个数. 考虑左边,右边,和最大的. #include<stdio.h> #define lson l,m,rt< ...

  4. hdu-3308 LCIS (线段树区间合并)

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

  5. POJ 3667 Hotel(线段树 区间合并)

    Hotel 转载自:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html [题目链接]Hotel [题目类型]线段树 ...

  6. HDU 3911 线段树区间合并、异或取反操作

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3911 线段树区间合并的题目,解释一下代码中声明数组的作用: m1是区间内连续1的最长长度,m0是区间内连续 ...

  7. HDU 3911 Black And White(线段树区间合并+lazy操作)

    开始以为是水题,结果...... 给你一些只有两种颜色的石头,0为白色,1为黑色. 然后两个操作: 1 l r 将[ l , r ]内的颜色取反 0 l r 计算[ l , r ]内最长连续黑色石头的 ...

  8. HYSBZ 1858 线段树 区间合并

    //Accepted 14560 KB 1532 ms //线段树 区间合并 /* 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b 把[ ...

  9. poj3667 线段树 区间合并

    //Accepted 3728 KB 1079 ms //线段树 区间合并 #include <cstdio> #include <cstring> #include < ...

随机推荐

  1. WebSockets基础

    网络套接字是下一代WEB应用程序双向通信技术,它是基于一个独立的socket并且需要客户端浏览器支持HTML5. 一旦你了解了网络套接字与WEB服务器的连接,你将可以从浏览器发送数据到服务器并且可以接 ...

  2. poj 1742 Coins (动态规划,背包问题)

    Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 32977   Accepted: 11208 Descripti ...

  3. 解决VS2010控制台程序运行结束不显示请按任意键继续

    在VS2010里的控制台应用程序在运行时,结果画面一闪而过,不管是用F5 还是用Ctrl + F5都是一样,导致无法看到结果. 网上有不少的办法,说是都是在程序最后加一个要程序暂停的语句( syste ...

  4. Ohlàlà

    Chap 1数数字 un 1 deux 2 trois 3 quatre 4 cinq 5 six 6 sept 7 huit 8 neuf 9 dix 10   Chap 2 讲地名 Paris 巴 ...

  5. MongoDB error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js(转)

    rror: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js 一般这种情况就是:自己指定的数据库,所以不能.自动加 ...

  6. Tab的键的妙用

    vs2013输入“(”的时候自动加入了“)”,开始的时候感觉相当不方便,要按“End”才能继续输入“:”,后来发现按“Tab"也会自动跳出括号,于是满心喜欢.

  7. UITableView错误 ‘unable to dequeue a cell with identifier Cell'

    - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentif ...

  8. Canvas绘图API

    Canvas就是一个画布,可以进行任何的线.图形.填充等一系列的操作. Canvas的Context对象 要使用Canvas来绘制图形必须在页面中添加Canvas的标签 <canvas id=& ...

  9. Fix a corrupted user profile

    Fix a corrupted user profile Applies to Windows 7 Your user profile is a collection of settings that ...

  10. Balance_01背包

    Description Gigel has a strange "balance" and he wants to poise it. Actually, the device i ...