cdoj 秋实大哥与战争

时间:2022-03-20 09:29:52

首先,显然每个区间的最长连续子区间要么在左孩子里,要么在右孩子里,要么跨越两个孩子。于是我们可以对每个区间维护如下信息ll(left long),rl(rigth long),ml(mid long)分别表示前缀最长长度,后缀最长长度,中间的最长区间长度,并维护即可。

 #include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<string> using namespace std; struct Tree{
int l,r;
int ll,rl,ml;
}; int n,m;
Tree T[]; void buildtree(int now,int l,int r){
T[now].ll=T[now].rl=T[now].ml=r-l+;
T[now].l=l;
T[now].r=r;
if (l==r) return;
buildtree(now<<,l,(l+r)>>);
buildtree((now<<)|,((l+r)>>)+,r);
} void update(int now,int aim,int val){
if (T[now].l==T[now].r){
T[now].ll=T[now].rl=T[now].ml=val;
return;
}
int mid=(T[now].l+T[now].r)>>;
if (aim<=mid) update(now<<,aim,val);
else update((now<<)|,aim,val);
T[now].ll=T[now<<].ll;
T[now].rl=T[(now<<)|].rl;
if (T[now<<].ll==(T[now<<].r-T[now<<].l+)) T[now].ll=T[now].ll+T[(now<<)|].ll;
if (T[(now<<)|].rl==T[(now<<)|].r-T[(now<<)|].l+) T[now].rl+=T[now<<].rl;
T[now].ml=max(T[now<<].ml,T[(now<<)|].ml);
T[now].ml=max(T[now].ml,T[now<<].rl+T[(now<<)|].ll);
} int query(int now,int aim){
if (T[now].l==T[now].r || T[now].ml== || T[now].ml==T[now].r-T[now].l+){
return T[now].ml;
}
int mid=(T[now].l+T[now].r)>>;
if (aim<=mid){
if (aim>=T[now<<].r-T[now<<].rl+)
return query(now<<,aim)+query((now<<)|,mid+);
else
return query(now<<,aim);
}
else{
if (aim<=T[(now<<)|].l+T[(now<<)|].ll-)
return query((now<<)|,aim)+query(now<<,mid);
else
return query((now<<)|,aim);
}
} int main(){
scanf("%d%d",&n,&m);
buildtree(,,n);
for (int cas=;cas<=m;cas++){
int f,x;
scanf("%d%d",&f,&x);
if (f==){
update(,x,);
}
if (f==){
update(,x,);
}
if (f==){
printf("%d\n",query(,x));
}
checktree(,,n);
}
return ;
}
/*
5 3
2 2
0 3
2 2 5 5
2 2
0 3
2 2
1 3
2 2
*/

cdoj 秋实大哥与战争的更多相关文章

  1. CDOJ 1061 C - 秋实大哥与战争 STL set 迭代器

    题目链接: C - 秋实大哥与战争 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Sub ...

  2. UESTC&lowbar;秋实大哥与战争 2015 UESTC Training for Data Structures&lt&semi;Problem D&gt&semi;

    D - 秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  3. 2015 UESTC 数据结构专题D题 秋实大哥与战争 SET的妙用

    D - 秋实大哥与战争 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...

  4. 2015 UESTC 数据结构专题D题 秋实大哥与战争 变化版本的线段树,合并区间,单点查询

    D - 秋实大哥与战争 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...

  5. UESTC 1061 秋实大哥与战争 线段树区间合并

    秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 男儿何不带吴钩, ...

  6. E - 秋实大哥与战争

    秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  7. cdoj 秋实大哥搞算数

    地址:http://acm.uestc.edu.cn/#/contest/show/95 题目: N - 秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others)   ...

  8. cdoj 秋实大哥带我飞 最短路走法 含0权边

    //做完这题以后终于理解白书上的边为什么要那样定义了 可以很方便的在o(1) 时间内找到反向边 解法:先跑一边最短路,然后检查最短路上有没有0权边(dfs就好,但是每条边只能走一次,这里就需要用异或找 ...

  9. CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图

    题目链接 A - 秋实大哥与连锁快餐店 Time Limit:3000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu S ...

随机推荐

  1. backup3

    private void changLayoutTemp2(IActiveView activeView, IPageLayout pageLayout, IPageLayout pTempPageL ...

  2. VC&plus;&plus; CEdit

    CEDIT _1, //selection pEdit1->SetSel(0,strBuffer - m_strInput,0); pEdit1->SetFocus(); //the se ...

  3. Linux下搭建nginx php环境

    下载安装所需包 openssl-1.0.1i.tar.gz zlib-1.2.8.tar.gz pcre-8.35.tar.gz nginx-1.7.4.tar.gz 以上为nginx依赖文件 lib ...

  4. PgSQL &&num;183&semi; 特性分析 &&num;183&semi; 谈谈checkpoint的调度

    在PG的众多参数中,参数checkpoint相关的几个参数颇为神秘.这些参数与checkpoint的调度有关,对系统的稳定性还是比较重要的,下面我们为大家解析一下,这要先从PG的数据同步机制谈起. P ...

  5. SecureCRT的背景和文字颜色的修改

    options->;session options->;emulation->;terminal选择linux(相应的服务器系统)ansi color 打上钩options-> ...

  6. IEBrowse学习笔记

    //登录 private void toolStripButton1_Click(object sender, EventArgs e) { //ie.ExecuteScript("aler ...

  7. XC通讯录

    XC通讯录基于Android4.4开发的一个手机通讯录,具有手机拨号,添加联系人,查看联系人,管理编辑联系人,智能查找联系人,删除及批量删除,备份/还原数据,以及手机联系人导入等功能,界面简洁美观,欢 ...

  8. 用于显示上个月和下个月&lowbar;PHP

    /** * 用于显示上个月和下个月 * @param int $sign 1:表示上个月 0:表示下个月 * @return string */ function GetMonth($sign=&qu ...

  9. Spring MVC在接收复杂集合参数

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...

  10. Oracle Spool详解

    转自:http://blog.sina.com.cn/s/blog_6bccf0360101hzsh.html 1.spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来 ...