POJ2777(线段树裸题)
题目: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(线段树裸题)的更多相关文章
- poj-2777线段树刷题
title: poj-2777线段树刷题 date: 2018-10-16 20:01:07 tags: acm 刷题 categories: ACM-线段树 概述 这道题是一道线段树的染色问题,,, ...
- POJ 3468 线段树裸题
这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...
- BZOJ1067&P2471 [SCOI2007]降雨量[线段树裸题+细节注意]
dlntqlwsl 很裸的一道线段树题,被硬生生刷成了紫题..可能因为细节问题吧,我也栽了一次WA50分.不过这个隐藏条件真的对本菜鸡来说不易发现啊. 未知的年份连续的就看成一个就好了,把年份都离散化 ...
- CPU监控 线段树裸题
LINK:bzoj3064 此题甚好码了20min停下来思考的时候才发现不对的地方有点坑... 还真不好写来着 可这的确是线段树的裸题...我觉得我写应该没有什么大问题 不过思路非常的紊乱 如果是自己 ...
- 【LOJ6029】「雅礼集训 2017 Day1」市场(线段树裸题)
点此看题面 大致题意: 维护序列,支持区间加法,区间除法(向下取整),区间求\(min\)和区间求和. 线段树维护区间除法 区间加法.区间求\(min\)和区间求和都是线段树基本操作,因此略过不提. ...
- HDU1166 线段树裸题 区间求和
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 4893 线段树裸题
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- cdoj 1324 卿学姐与公主 线段树裸题
卿学姐与公主 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- [HDU1754]I Hate It线段树裸题
http://acm.hdu.edu.cn/showproblem.php?pid=1754 解题关键:刚开始死活超时,最后发现竟然是ch,和t1.t2每次循环都定义的锅,以后养成建全局变量的习惯. ...
随机推荐
- java深浅拷贝
转载:http://atjava.iteye.com/blog/1722501 首先我们看看浅拷贝和深拷贝的定义 浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制 深拷贝:对象, ...
- React路由配置使用
Router包安装: 安装包还是要打开命令行工具,使用npm来进行安装. npm install --save react-router react-router-dom 页面login: impor ...
- adobe flash player不是最新版本
adobe flash player不是最新版本
- Linq的简介和基础知识学习
学习LINQ之前,我们要知道LINQ是干什么,解决什么问题的,怎样学习? 一.LINQ简介 1.什么是LINQ? 什么是LINQ?LINQ中文翻译为语言集成查询(Language Integrated ...
- UVALive 4490 压缩DP
转载自http://blog.csdn.net/zstu_zlj/article/details/9903589 没有接触过压缩DP.位运算也不太熟.所以理解了思路还是不懂代码.
- json 与字符串相互转换,
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- Python 多进程、多线程效率比较
Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...
- SWIFT模糊效果
首先创建一个模糊效果 let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) 接着创建一个承载模糊效果的视图let blurView ...
- 和菜鸟一起学linux内核源码之基础准备篇
来源:http://blog.csdn.net/eastmoon502136/article/details/8711104 推荐阅读:linux内核源码最初版linux内核源代码,简单易懂,适合初学 ...
- Unity 3D编辑器扩展介绍、教程(一) —— 创建菜单项
Unity编辑器扩展教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introduct ...