P1558 色板游戏 线段树(区间修改,区间查询)
题意:
给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 色板游戏 线段树(区间修改,区间查询)的更多相关文章
- [线段树]区间修改&区间查询问题
区间修改&区间查询问题 [引言]信息学奥赛中常见有区间操作问题,这种类型的题目一般数据规模极大,无法用简单的模拟通过,因此本篇论文将讨论关于可以实现区间修改和区间查询的一部分算法的优越与否. ...
- 洛谷P1558 色板游戏 [线段树]
题目传送门 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...
- 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 ...
- Hdu 1698(线段树 区间修改 区间查询)
In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroes. T ...
- 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 ...
- P1558 色板游戏 (线段树)
题目链接 Solution 一个简单的 或 线段树.竟然坑了我一个小时... 因为颜色很小,所以把状态压起来. 然后每个节点上的数值代表当前颜色状态. 然后节点合并很简单,直接或起来. 需要注意一下的 ...
- A Simple Problem with Integers POJ - 3468 线段树区间修改+区间查询
//add,懒标记,给以当前节点为根的子树中的每一个点加上add(不包含根节点) // #include <cstdio> #include <cstring> #includ ...
- P1558 色板游戏 线段树+二进制状压
好,这个想法是我想拿去做HH的项链的.但是那个颜色有十万种...直接爆. 做这个倒是so easy 被两个地方坑了.1,a,b可能大小相反. 2,ask之前要down一波,我没down就挂了..... ...
- I Hate It(线段树点修改区间查询)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others) ...
随机推荐
- Nginx 配置Websocket
Nginx反向代理配置websocket nginx.org 官网推荐如下的配置,也可以直接看官网:http://nginx.org/en/docs/http/websocket.html http ...
- PHP 实现时间戳转化为几分钟前、几小时前等格式
//发布时间提示 function get_last_time($time) { // 当天最大时间 $todayLast = strtotime(date('Y-m-d 23:59:59')); $ ...
- python爬虫模拟登录的图片验证码处理和会话维持
目标网站:古诗文网 登录界面显示: 打开控制台工具,输入账号密码,在ALL栏目中进行抓包 数据如下: 登录请求的url和请求方式 登录所需参数 参数分析: __VIEWSTATE和__VIEWSTAT ...
- 巨杉Tech | 使用 SequoiaDB 分布式数据库搭建JIRA流程管理系统
介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域.很多企业与互联网公司都在使用Jira作为内部 ...
- testclass面试题
http://www.testclass.net/interview/selenium/ seleniuim面试题 http://www.testclass.net/interview/inter ...
- Django | 解决“(1146, "Table 'mydb.django_session' doesn't exist")”报错的方法
我只写了下面一行 就生成了session表 manage.py makemigrations sessions manage.py migrate sessions 参考:https://www.cn ...
- SaltStack之return与job管理
目录 1. SaltStack组件之return 1.1 return流程 1.2 使用mysql作为return存储方式 2. job cache 2.1 job cache流程 2.2 job管理 ...
- Learning to See in the Dark论文阅读笔记
这是一篇图像增强的论文,作者创建了一个数据集合,和以往的问题不同,作者的创建的see in the dark(SID)数据集合是在极其暗的光照下拍摄的,这个点可以作为一个很大的contribution ...
- eclipse的一些使用
1.恢复默认视图 window->perspective->open perspective ->open java 2.打开其他的一些视图,比如server(tomcat,目前使用 ...
- python collections 模块 常用集合
1.nametulpe # tuple 可以表示不变集合 列如坐标 point = (1,1) # 缺点是 只可以通过下标方式访问 #namedtuple是一个函数,它用来创建一个自定义的tuple对 ...