题目: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=400005;
int n,m,q,L,R,co;
char ch;
long long col[N],lazy[N];
void pushdown(int cnt)
{if(lazy[cnt]){col[cnt*2]=lazy[cnt];col[cnt*2+1]=lazy[cnt];lazy[cnt*2]=lazy[cnt];lazy[cnt*2+1]=lazy[cnt];lazy[cnt]=0;}
}
void pushup(int cnt)
{col[cnt]=(col[cnt*2]|col[cnt*2+1]);
}
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)/2;if(mid>=L)add(l,mid,cnt*2);if(mid<R)add(mid+1,r,cnt*2+1);pushup(cnt);
}
long long query(int l,int r,int cnt)
{if(l>=L&&r<=R){return col[cnt];}long long ans=0;pushdown(cnt);int mid=(l+r)/2;if(mid>=L)ans|=query(l,mid,cnt*2);if(mid<R)ans|=query(mid+1,r,cnt*2+1);return ans;
}
void build(int l,int r,int cnt)
{col[cnt]=1;if(l==r)return;int mid=(l+r)/2;build(l,mid,cnt*2);build(mid+1,r,cnt*2+1);
}
int main()
{while(scanf("%d%d%d",&n,&m,&q)!=EOF){build(1,n,1);memset(lazy,0,sizeof lazy);for(int i=1;i<=q;i++){scanf(" %c%d%d",&ch,&L,&R);if(L>R)swap(L,R);//
            if(ch=='C'){scanf("%d",&co);co=(1<<(co-1));add(1,n,1);}if(ch=='P'){int ret=0;long long ans=query(1,n,1);while(ans){ret+=(ans&1);ans>>=1;}printf("%d\n",ret);}}}return 0;
}

转载于:https://www.cnblogs.com/Narh/p/8721372.html

POJ2777(线段树裸题)相关推荐

  1. UVA 12086 Potentiometers(线段树裸题)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  2. Count Color poj2777 线段树

    Count Color poj2777 线段树 题意 有一个长木板,现在往上面在一定区间内刷颜色,后来刷的颜色会掩盖掉前面刷的颜色,问每次一定区间内可以看到多少种颜色. 解题思路 这里使用线段树,因为 ...

  3. 线段树模板题3:区间染色问题

    1.3线段树模板题3:区间染色问题 在DotA游戏中,帕吉的肉钩实际上是大多数英雄中最恐怖的东西.挂钩由长度相同的几个连续的金属棍组成. 现在,帕吉(Pudge)希望对挂接进行一些操作. 让我们将钩子 ...

  4. J.哭泣的阿木木(线段树模板题)

    哭泣的阿木木 Description 没啥用的背景故事: 在远古的恕瑞玛,有一个孤独而又忧郁的灵魂,阿木木.他在世间游荡,只为找到一个朋友.他遭受了一种远古的巫术诅咒,注定忍受永世的孤单,因为被他触碰 ...

  5. 小清的线段树25题日志01 线段树下你和我 欢乐多又多

    前言 难度大致会按排序来 就不写总结啦 嘻嘻 适合刚学线段树的人(和我一样 练手 /*if you can't see the repayWhy not just work step by stepr ...

  6. 玲珑杯 1164 - 战舰萝莉 线段树水题

    点击打开链接 DESCRIPTION 在大战之后,法力浮·鳝AK迅速驾船驶向北海.当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:"要把BOSS打倒就要准备足够的等级."所以 ...

  7. hdu1156(简单线段树 模板题)

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

  8. poj2777线段树

    题目大意:有一长为L的木板,将其分为等长的L段,从左到右编号为1~L.现将L段木板着色 1. 输入"C A B C" 是将A到B这一段着成C这种颜色. 2. 输入"P A ...

  9. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 177  Solved: 128 [Submit][Stat ...

最新文章

  1. yield学习续:yield return迭代块在Unity3D中的应用——协程
  2. 自动驾驶安全框架开发进展综述
  3. assert() (C++) 非常简单!
  4. Xcode7在运行包含HTTP协议的程序时报错解决方法 App Transport Security has blocked a cleartext HTTP (http)...
  5. 中小型局域网构建实践 PDF高清版
  6. DataTables怎么给某一列加上click事件
  7. 跨性别,你所不知道的事
  8. calender获取日期前几月_java获取当前时间和前一天日期(实现代码)
  9. dj鲜生-05-配置-静态目录-模板目录-后台语言时区
  10. 利用 Caddy 轻松实现反向代理/镜像(支持自签SSL证书)
  11. 微软认知服务开发实践(1) - 牛津计划简介
  12. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)
  13. colorpix取色小工具_Python版的取色器
  14. 日期对象Date的计算
  15. Hello Guice
  16. win7打开win10共享计算机要凭据,win10打开共享文件夹后要求凭证怎么办
  17. html5 canvas画彩虹,HTML5 Canvas彩虹连接点动画
  18. 计算机中用函数排序,编写一个sort()函数,实现选择法排序,在主函数中输入10个整数,主函数调用sort()函数实现排序后将数据输出。...
  19. 2022年最新版初级商业数字营销师钻展题库
  20. 新型高科技口罩即将成为一种身份象征

热门文章

  1. javascript读取txt_JavaScript编程语言学习笔记——编程
  2. python脚本语言采用声音作为手段_python 利用pyttsx3文字转语音过程详解
  3. php dirtoarray,PHP Ds\Stack toArray()用法及代码示例
  4. 电脑常见故障排除_中央空调常见故障解析
  5. [深度学习] 自然语言处理---Transformer 位置编码介绍
  6. 使用C#编程解决数独求解(从图片识别到数独求解)
  7. ubuntu install scite and 中文乱码解决
  8. 神经网络实现xor_在神经网络中实现逻辑门和XOR解决方案
  9. 软件架构:模块、组件、微服务总结
  10. 为中国游牧蒙古人造像