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每次循环都定义的锅,以后养成建全局变量的习惯. ...
随机推荐
- OAF 供应商门户添加功能标签后获取当前供应商VendorId的方法
一种是参考管理页面 /oracle/apps/pos/supplier/webui/SuppDtPG 在目标页面的AM中添加VO实例,oracle.apps.pos.supplier.server.S ...
- OC 内存管理之手动内存管理MRC
一.基本原理 1.什么是内存管理 内存管理的重要性: 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间. ...
- Kubernetes设计架构
官方文档:https://www.kubernetes.org.cn/doc-11 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc), ...
- learning shell script prompt to run with superuser privileges (4)
Shell script prompt to run with superuser privileges [Purpose] Check whether have root privil ...
- learning uboot switch to standby system using button
pseudocode: If(reset_button was pressed ) { Change uboot env bootslot^1 }
- C#阿里云 移动推送 接入
接入阿里云的 移动推送 SDK,实现在后台直接 发送消息给APP的功能. ----------------OpenAPI进行推送 2.0高级接口 阿里云配置准备:1.移动app配置:打开 ...
- hdu4348
题解: 因为卡空间,所以直接到spoj上面去做了 区间修改的线段树 但是加lazy会把之前的操作修改 正确的解法是lazy不下传,只是在当前计算 但是听说可以记录时间的下传,我弱弱不会 代码: #in ...
- IE11浏览器,按F12 检查元素,工具会出来,但是没法正常使用?
微软网站上找到IE11的累计安全更新,安装后就能正常使用了.https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=45154
- Jena RDF API
1. jena 简单使用 RDF可以用简单的图示:包括节点以及连接节点的带有箭头的线段来理解. 这个例子中,资源 http://.../JohnSmith 表示一个人.这个人的全名是 John Sm ...
- IOS语言总结
本文主要介绍和C++不同的地方. 1.类的定义: 一个类有两个文件一个.h还有一个.m文件 #import <Foundation/Foundation.h> @interface MyC ...