题意:

给n,m,k,n长度,k个操作,m种颜色

操作C:输入A,B,C,区间【A,B】变成C颜色,可能A>B,所以要确保A<B

操作P:输入A,B,区间【A,B】的颜色种类

思路:

因为颜色只有30种,可以用位运算,然后进行lazy标记

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define inf 0x3f3f3f3f
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 998244353
const int maxn=1e6+;
int n,m,k;
int tree[maxn],lazy[maxn];
il void pushdown(int x){
if(lazy[x]){
tree[x<<]=lazy[x];tree[x<<|]=lazy[x];
lazy[x<<]=lazy[x];lazy[x<<|]=lazy[x];
lazy[x]=;
}
}
il void pushup(int x){
tree[x]=tree[x<<]|tree[x<<|];
}
void build(int x,int l,int r){
if(l==r){
tree[x]=;return;
}
int mid=(l+r)>>;
build(x<<,l,mid);
build(x<<|,mid+,r);
pushup(x);
}
void update(int x,int l,int r,int l1,int r1,int zhi){
if(l1<=l && r<=r1){
pushdown(x);
int w=(ll)<<(zhi-);
lazy[x]=w;tree[x]=w;
return;
}
pushdown(x);
int mid=(l+r)>>;
if(l1<=mid){
update(x<<,l,mid,l1,r1,zhi);
}
if(r1>mid){
update(x<<|,mid+,r,l1,r1,zhi);
}
pushup(x);
}
int query(int x,int l,int r,int l1,int r1){
if(l1<=l && r<=r1){
return tree[x];
}
pushdown(x);
int temp=;
int mid=(l+r)>>;
if(l1<=mid){
temp|=query(x<<,l,mid,l1,r1);
}
if(r1>mid){
temp|=query(x<<|,mid+,r,l1,r1);
}
return temp;
}
int main(){
char c;
scanf("%d%d%d",&n,&m,&k);
build(,,n);
for(it i=;i<k;i++){
//getchar();
scanf("%s",&c);
if(c=='C'){
int A,B,C;
scanf("%d%d%d",&A,&B,&C);
if(A>B){swap(A,B);}
update(,,n,A,B,C);
}
else{
int A,B;
scanf("%d%d",&A,&B);
if(A>B){swap(A,B);}
int sum=query(,,n,A,B),ans=;
for(it j=;j<m;j++){
if(sum&(<<j)){ans++;}
}
printf("%d\n",ans);
}
}
return ;
}

这道题我wa了一个晚上,调了一个晚上,自闭了一个晚上

第二天早上,重写还是wa,实在是搞不定了,去看了题解。感觉没差,然后把题解交上ac????

然后照着题解写了一边又wa,???最后在讨论区瞧见了一个解释……

我举报这题坑爹。不过让我涨了%c %s getchar()的认知

这题用getchar();scanf("%c",&c);就是wa到死

换成scanf(" %c",&c);或者scanf("%s",&c);就AC

从未考虑这一块的我理所当然的用了getchar();还拼命找错,记住了

P1558 色板游戏 线段树(区间修改,区间查询)的更多相关文章

  1. [线段树]区间修改&区间查询问题

    区间修改&区间查询问题 [引言]信息学奥赛中常见有区间操作问题,这种类型的题目一般数据规模极大,无法用简单的模拟通过,因此本篇论文将讨论关于可以实现区间修改和区间查询的一部分算法的优越与否. ...

  2. 洛谷P1558 色板游戏 [线段树]

    题目传送门 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...

  3. SPOJ GSS2 - Can you answer these queries II(线段树 区间修改+区间查询)(后缀和)

    GSS2 - Can you answer these queries II #tree Being a completist and a simplist, kid Yang Zhe cannot ...

  4. Hdu 1698(线段树 区间修改 区间查询)

    In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroes. T ...

  5. SPOJ BGSHOOT - Shoot and kill (线段树 区间修改 区间查询)

    BGSHOOT - Shoot and kill no tags  The problem is about Mr.BG who is a great hunter. Today he has gon ...

  6. P1558 色板游戏 (线段树)

    题目链接 Solution 一个简单的 或 线段树.竟然坑了我一个小时... 因为颜色很小,所以把状态压起来. 然后每个节点上的数值代表当前颜色状态. 然后节点合并很简单,直接或起来. 需要注意一下的 ...

  7. A Simple Problem with Integers POJ - 3468 线段树区间修改+区间查询

    //add,懒标记,给以当前节点为根的子树中的每一个点加上add(不包含根节点) // #include <cstdio> #include <cstring> #includ ...

  8. P1558 色板游戏 线段树+二进制状压

    好,这个想法是我想拿去做HH的项链的.但是那个颜色有十万种...直接爆. 做这个倒是so easy 被两个地方坑了.1,a,b可能大小相反. 2,ask之前要down一波,我没down就挂了..... ...

  9. I Hate It(线段树点修改区间查询)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others) ...

随机推荐

  1. [ZJOI2009] 狼与羊的故事 - 最小割

    给定一个\(N \times M\)方格矩阵,每个格子可在\(0,1,2\)中取值.要求在方格的边上进行划分,使得任意联通块内不同时包含\(1\)和\(2\)的格子. ________________ ...

  2. Selenium3+python自动化009- 截图

    一.断言 assert cur_title=='百度一下,你就知道1','title断言失败' 'title断言失败':自定义报错 二.截图 # 调用截屏方法(路径+截图名称)driver.get_s ...

  3. TD - SimpleTextarea

    html模板 <input dojoType="bootstrap.form.SimpleTextarea" dojoAttachPoint="assetDescr ...

  4. Selenium模块/目录说明

      目录说明: selenium/common     #定义了webdriver的异常类 selenium/webdriver   #定义了webdriver所有python实现: 1.各种浏览器支 ...

  5. 解决报错:ERROR 1005 (HY000): Can't create table 'market.orders' (errno: 150)

    1.描述问题: 在这里我新建了两张表(customers_info和orders) 表一:customers_info CREATE TABLE customers_info ( c_num INT( ...

  6. Centos7添加软链接

    1.pycharm添加软连接: 命令行模式中输入命令: ln -s /root/pycharm-2018.1/bin/pycharm.sh /usr/bin/pycharm ps:代码中/root/p ...

  7. Echat 地图样式格式

    1.白色 mapStyle: { styleJson: [{ 'featureType': 'water', 'elementType': 'all', 'stylers': { 'color': ' ...

  8. Linux sed识别HTML标签

    在做Linux作业,遇到一题用sed替换掉文件中的特殊字符,其中HTML标签就是一大堆特殊字符. 先来说说sed的替换使用“s/待替换的字符/将替换成的字符/”. 其后还可以跟g,即“s///g”,表 ...

  9. python3练习100题——019

    原题链接:http://www.runoob.com/python/python-exercise-example19.html 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数&q ...

  10. Chrome浏览器所有页面崩溃

    问题描述 Chrome浏览器所有页面崩溃,包括设置页面,"喔唷,崩溃啦!" 显示错误码:STATUS_INVALID_IMAGE_HASH Chrome所有插件报错,右下角一串弹框 ...