题目: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. Apache Tomcat 6.0 Tomcat6 服务因 1 (0x1) 服务特定错误而停止

    1.Tomcat目录下的bin

  2. 以DefaultFuture为例,看类变量初始化顺序

    https://stackoverflow.com/questions/8517121/java-what-is-the-difference-between-init-and-clinit# < ...

  3. 利用CNN进行流量识别 本质上就是将流量视作一个图像

    from:https://netsec2018.files.wordpress.com/2017/12/e6b7b1e5baa6e5ada6e4b9a0e59ca8e7bd91e7bb9ce5ae89 ...

  4. javascript--- hasOwnProperty、instanceof 、typeof的区别

    typeof 作用:用来判断变量的类型 返回值: string  只有以下几种:number.boolean.string.object.undefined.function[很容易漏掉这个] 形式: ...

  5. JVM笔记(一) Java内存区域

    Java 内存区域 总概 java虚拟机在执行java程序的过程中,会把它管理的内存划分为几个不同的数据区域.每当运行一个java程序时,就会启动一个虚拟机. 具体的区域如图所示: 同时,方法区 与 ...

  6. html <a>标签介绍

    <a href="javascript:void(0)" click="function(){}" />= a 标签样式     一组专门的预定义的 ...

  7. bzoj4001

    题解: 答案就是n*(n+1)/2/(2*n-1) 代码: #include<bits/stdc++.h> double n; int main() { scanf("%lf&q ...

  8. Nexcel的行列,和单元格坐标

    book.Sheets[1].UsedRange.Rows.Count 行数从1开始 book.Sheets[1].UsedRange.LastCol 从0开始 book.Sheets[1].Cell ...

  9. C语言atoi函数(将字符串转化为int)

    头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str); [函数说明]atoi ...

  10. sublime text3 设置快速生成代码

    依次打开 Tools > Developer(开发者选项) > new Snippet(新的代码块).可以看到注释的说明: <snippet> <content>& ...