题目:http://poj.org/problem?id=2777

别忘了各地的return;

有可能输入的L<R,手动swap;

似乎是多组输入?

pushup和pushdown的位置。

(原来pushup只有一行)

要开四倍数组。是这种写法的原因吧。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=;
int n,m,q,L,R,co;
char ch;
long long col[N],lazy[N];
void pushdown(int cnt)
{
if(lazy[cnt])
{
col[cnt*]=lazy[cnt];
col[cnt*+]=lazy[cnt];
lazy[cnt*]=lazy[cnt];
lazy[cnt*+]=lazy[cnt];
lazy[cnt]=;
}
}
void pushup(int cnt)
{
col[cnt]=(col[cnt*]|col[cnt*+]);
}
void add(int l,int r,int cnt)
{
if(l>=L&&r<=R)
{
col[cnt]=co;
lazy[cnt]=co;
return;
}
pushdown(cnt);
int mid=(l+r)/;
if(mid>=L)add(l,mid,cnt*);
if(mid<R)add(mid+,r,cnt*+);
pushup(cnt);
}
long long query(int l,int r,int cnt)
{
if(l>=L&&r<=R)
{
return col[cnt];
}
long long ans=;
pushdown(cnt);
int mid=(l+r)/;
if(mid>=L)ans|=query(l,mid,cnt*);
if(mid<R)ans|=query(mid+,r,cnt*+);
return ans;
}
void build(int l,int r,int cnt)
{
col[cnt]=;
if(l==r)return;
int mid=(l+r)/;
build(l,mid,cnt*);
build(mid+,r,cnt*+);
}
int main()
{
while(scanf("%d%d%d",&n,&m,&q)!=EOF)
{
build(,n,);
memset(lazy,,sizeof lazy);
for(int i=;i<=q;i++)
{
scanf(" %c%d%d",&ch,&L,&R);
if(L>R)swap(L,R);//
if(ch=='C')
{
scanf("%d",&co);
co=(<<(co-));
add(,n,);
}
if(ch=='P')
{
int ret=;
long long ans=query(,n,);
while(ans)
{
ret+=(ans&);
ans>>=;
}
printf("%d\n",ret);
}
}
}
return ;
}

POJ2777(线段树裸题)的更多相关文章

  1. poj-2777线段树刷题

    title: poj-2777线段树刷题 date: 2018-10-16 20:01:07 tags: acm 刷题 categories: ACM-线段树 概述 这道题是一道线段树的染色问题,,, ...

  2. POJ 3468 线段树裸题

    这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...

  3. BZOJ1067&P2471 [SCOI2007]降雨量[线段树裸题+细节注意]

    dlntqlwsl 很裸的一道线段树题,被硬生生刷成了紫题..可能因为细节问题吧,我也栽了一次WA50分.不过这个隐藏条件真的对本菜鸡来说不易发现啊. 未知的年份连续的就看成一个就好了,把年份都离散化 ...

  4. CPU监控 线段树裸题

    LINK:bzoj3064 此题甚好码了20min停下来思考的时候才发现不对的地方有点坑... 还真不好写来着 可这的确是线段树的裸题...我觉得我写应该没有什么大问题 不过思路非常的紊乱 如果是自己 ...

  5. 【LOJ6029】「雅礼集训 2017 Day1」市场(线段树裸题)

    点此看题面 大致题意: 维护序列,支持区间加法,区间除法(向下取整),区间求\(min\)和区间求和. 线段树维护区间除法 区间加法.区间求\(min\)和区间求和都是线段树基本操作,因此略过不提. ...

  6. HDU1166 线段树裸题 区间求和

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. HDU 4893 线段树裸题

    Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  8. cdoj 1324 卿学姐与公主 线段树裸题

    卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  9. [HDU1754]I Hate It线段树裸题

    http://acm.hdu.edu.cn/showproblem.php?pid=1754 解题关键:刚开始死活超时,最后发现竟然是ch,和t1.t2每次循环都定义的锅,以后养成建全局变量的习惯. ...

随机推荐

  1. OncePerRequestFilter的作用

    在spring中,filter都默认继承OncePerRequestFilter,但为什么要这样呢? OncePerRequestFilter顾名思义,他能够确保在一次请求只通过一次filter,而不 ...

  2. Apache Tomcat 6.0 Tomcat6 服务因 1 (0x1) 服务特定错误而停止

    1.Tomcat目录下的bin

  3. C#窗体如何通过keybd_event()函数模拟键盘按键(组合键)产生事件

    如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...

  4. javascript数据结构——队列

    队列是一种先进先出的数据结.队列只能在队尾插入元素,在队首删除元素,这点和栈不一样.它用于存储顺序排列的数据.队列就像我们日常中的排队一样,排在最前面的第一个办理业务,新来的人只能在后面排队.队列这种 ...

  5. write file to stroage trigger kernel warning

    when you write large files  to extern stroage, the kernel may have as follow context: [ 4560.236385] ...

  6. openshift rhc

    Microsoft Windows [Version 6.1.7601]Copyright (c) 2009 Microsoft Corporation. All rights reserved. C ...

  7. 什么是REST API?

    REST指一组架构约束条件和原则,满足约束条件和原则的应用程序设计.架构,软件体系结构分为三部分:构建,用于描述计算机:连接器,用于描述构建的链接部分:配置将构建和连接器组成有机整体.web基本技术: ...

  8. Spring Data JPA 复杂/多条件组合分页查询

    推荐视频: http://www.icoolxue.com/album/show/358 public Map<String, Object> getWeeklyBySearch(fina ...

  9. css控制编辑器内容自动换行

    在编辑器或者文本框中按住数字或字母不放 当字符很长时,就会撑破页面, 可以用一下方法控制字符自动换行 style="word-break:break-all;"

  10. 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(五)

    MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 六.部署到JBoss服务器 1. 右键单击Servers视图,然后选择New>Server,选择您安 ...