【HDOJ】3308 LCIS
线段树,题目感觉比较难,看别人思路做的。还得继续练这个专题。
#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的更多相关文章
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- HDOJ 题目3308 LCIS(线段树,区间查询,区间合并)
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
- 【HDOJ】【3480】Division
DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
- 【HDOJ】【2829】Lawrence
DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...
- 【HDOJ】【3415】Max Sum of Max-K-sub-sequence
DP/单调队列优化 呃……环形链求最大k子段和. 首先拆环为链求前缀和…… 然后单调队列吧<_<,裸题没啥好说的…… WA:为毛手写队列就会挂,必须用STL的deque?(写挂自己弱……s ...
- 【HDOJ】【3530】Subsequence
DP/单调队列优化 题解:http://www.cnblogs.com/yymore/archive/2011/06/22/2087553.html 引用: 首先我们要明确几件事情 1.假设我们现在知 ...
- 【HDOJ】【3068】最长回文
Manacher算法 Manacher模板题…… //HDOJ 3068 #include<cstdio> #include<cstring> #include<cstd ...
随机推荐
- HTML5的你应该记住的一些知识点
刚开始学HTML5是从w3school开始的,那只是非常简单的一些了解,后面开始看一些xiongdilian的HTML5+CSS3的视频,照着视频做了一些简单的demo(需要的童鞋可以联系我,当然网上 ...
- 《转载》CSS中的三种样式来源:创作人员、读者和用户代理
CSS中的样式一共有三种来源:创作人员.读者和用户代理,来源的不同会影响到样式的层叠方式,很多第一次学习CSS的朋友,对这三种来源可能会存在一些困惑,下面我写一下自己的理解,若有错误的地方还请指正. ...
- 自己做的demo---c语言的基本语法,过阵子可以重新写一些算法跟数据结构了
//输入a,b,输出a+b /*#include<stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); ...
- (转)xml序列化
在 .NET Framework 中提供两种串行化方法,一种是二进制法,另一种是xml串行化. 序列化是将对象状态转换为可保持或传输的格式的过程,xml序列化是将对象的公共字段和属性序列化为xml流. ...
- C# DbHelperSQLP,操作不同的数据库帮助类 (转载)
本类主要是用来访问不同数据库而编写的主要功能如下 .数据访问基础类(基于不同数据库),主要是用来访问不同数据库的. .得到最大值:是否存在:是否存在: . 执行SQL和Orace语句,返回影响的记录数 ...
- latch: cache buffers chains故障处理总结
一大早就接到开发商的电话,说数据库的CPU使用率为100%,应用相应迟缓.急匆匆的赶到现场发现进行了基本的检查后发现是latch: cache buffers chains 作祟,处理过程还算顺利,当 ...
- 《转》15种CSS混合模式让图片产生令人惊艳的效果
浏览器支持 按照现在情况来讲, 浏览器支持 CSSbackground-blend-mode属性还在不断的完善中.早期版本的浏览器目前还不支持,但caniuse.com报告说在Chrome,Firef ...
- struts2 Action 接收参数的三种方法
刚学Struts2 时 大家可能遇到过很多问题,这里我讲一下Action 接收参数的三种方法,我曾经在这上面摔过一回.所以要警醒一下自己..... 第一种:Action里声明属性,样例:account ...
- Mysql JDBC Url参数说明useUnicode=true&characterEncoding=UTF-8
MySQL的 JDBC URL 格式 for Connector/J 如下例: jdbc:mysql://[host][,failoverhost...][:port]/[database] » [ ...
- ng-form
form提供的属性都是用来表示表单的验证状态的,包括:$pristine(表单没有填写记录).$dirty(表单有填写记录).$valid(通过验证).$invalid(未通过验证).$error(验 ...