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) ...
随机推荐
- Wannafly Camp 2020 Day 1H 最大公约数 - 质因数分解,高精度
把每个质因子扒出来乱搞一下 #include <bits/stdc++.h> using namespace std; int g[505][505]; int isp[505]; str ...
- ReviewBoard使用:添加SVN
1.登录ReviewBoard,选择“Admin” 2.选择 “Repositores”,点击按钮“Add” 3.填写内容,然后点击按钮“SAVE”保存 Name:仓库名称(自己随意写) Hostin ...
- IDEA构建maven项目生成的文件详解
IDEA构建的maven+springBoot项目结构如下: 1. .gitignore:分布式版本控制系统git的配置文件,意思为忽略提交 在 .gitingore 文件中,遵循相应的语法,即在每一 ...
- 火狐浏览器将网页保存为pdf
目录 火狐打印功能 火狐插件 save as pdf 深夜更博仙女镇 @ 有时候查一些技术博客之类的,当时收藏了,过一阵子再想查看的时候发现404了,所以稳妥的办法还是将把网页保存为pdf. 火狐打印 ...
- Spring与RestHighLevelClient
Elasticsearch连接方式有两种:分别为TCP协议与HTTP协议 最近使用es比较多,之前使用一直是使用spring封装的spring-data-elasticsearch:关于spring- ...
- Electron – 基础学习(1): 环境安装、创建项目及入门
这几天到年底了,公司也没啥事,闲着就到处瞅瞅.记得上一家公司的时候用 Electron+ng1 写过项目,只是那个时候项目框架都是别人搭的,自己只负责写功能,对Electron没啥认识. 这几天想着反 ...
- php中构建树状图
/** * 指定根层级的树状图 * @param array $list 初始数组 * @param int $root 最上级一条数据的id * @param string $pk 每一条数据的id ...
- Python连接操作数据库
步骤: 1.创建与数据库的连接对象: 2.创建游标: 3.通过游标执行语句 4.增删改需要提交(commit)数据 5.关闭连接 如: import MySQLdb # Python通过MySQL ...
- Mahmoud and Ehab and the message
Mahmoud wants to send a message to his friend Ehab. Their language consists of n words numbered from ...
- 2019牛客竞赛第六场D Move 宏观单调,部分不单调
Move 题意 有k个体积相同的箱子,有个憨憨有固定的装箱策略,每次都只装可以装的重量中最大的东西,求箱子的最小提及 分析 看起来可以二分,但由于他的装箱策略有点蠢,所以只在宏观上满足单调性,在特别小 ...