洛谷P4979 矿洞:坍塌
珂朵莉树吼啊!!!
又是一道水题,美滋滋~~~
$A$操作完全模板区间赋值
$B$操作也是一个模板查询,具体看代码
注意:读入不要用$cin$,会$T$,如果你是大佬,会玄学东西当我没说
代码:
#include<iostream>
#include<cstdio>
#include<set>
#include<algorithm>
#define N 500007
#define Set set<Node>::iterator
using namespace std;
struct Node
{
int l,r;
mutable char val;
Node(int L,int R,char V):l(L),r(R),val(V){}
Node(int L):l(L){}
bool operator < (const Node &it)const
{
return l<it.l;
}
};
set<Node> st;
int n,m;
#define isupper(x) ((x) >= 'A' && (x) <= 'Z')
inline char rchar() {
char c = getchar();
while (!isupper(c)) c = getchar();
return c;
}
Set Split(int x)
{
Set it=st.lower_bound(Node(x));
if(it!=st.end()&&it->l==x)
return it;
--it;
int L=it->l,R=it->r;
char V=it->val;
st.erase(it);
st.insert(Node(L,x-1,V));
return st.insert(Node(x,R,V)).first;
}
void Change(int l,int r,char v)
{
Set rr=Split(r+1),ll=Split(l);
st.erase(ll,rr);
st.insert(Node(l,r,v));
}
bool Search(int l,int r)
{
Set rr=Split(r+1),ll=Split(l);
char now=ll->val;
++ll;
for(Set it=ll;it!=rr;++it)
if(it->val!=now)
return 0;
return 1;
}
bool Ok(int l,int r)
{
Set rr=Split(r+1),ll=Split(l);
--ll;
if(ll->val==rr->val)
return 0;
else
return 1;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
char in;
in=rchar();
st.insert(Node(i,i,in));
}
st.insert(Node(n+1));
scanf("%d",&m);
for(int i=1;i<=m;++i)
{
char opt,v;
int x,y;
opt=rchar();
scanf("%d%d",&x,&y);
if(opt=='A')
{
v=rchar();
Change(x,y,v);
}
else
{
if(Search(x,y))
{
if(x==1||y==n)
{
printf("Yes\n");
}
else
{
if(Ok(x,y))
printf("Yes\n");
else
printf("No\n");
}
}
else
printf("No\n");
}
}
return 0;
}
洛谷P4979 矿洞:坍塌的更多相关文章
- 【题解】Luogu P4979 矿洞:坍塌
原题传送门:P4979 矿洞:坍塌 这是某场膜你赛的题,最后我一百零几分rank三十几滚粗 这是我唯一ac的一题 这题比较简单qaq 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
随机推荐
- 为什么要使用 SPL中的 SplQueue实现队列
今天看php的SPL标准库部分里面涉及到数据结构其中有 SplQueue 来实现队列效果,但是我刚接触php的时候学习到的是 使用array的 array_push 和 array_pop 就可以实现 ...
- DFA与动态规划
1.牛客练习赛45 A 给定字符串, 求字符不相邻的"QAQ"子序列个数. $dp[i][0]$ 只匹配一个'Q'的方案数的前缀和. $dp[i][1]$ 只匹配"QA& ...
- C语言快速判断素数——不超时
这属于算法上的问题,好好考虑一下算法,还要考虑一下素数的定义. 素数是只有1和本身能整除的整数.所以在求素数的时候,要将素数与1到素数本身中间的所有整数都相除,看是否有整除的数,如果有,那肯定不是素数 ...
- Python如何将字符和Unicode编码转变
小小总结一下,以防过几天忘记,自己的复习资料,如果能帮到大家,也是有所作用!! 1,字符转化为Unicode编码方法: ord("字符") ord("A") o ...
- 开始学Python 啦 ,持续不断总结中。。(转)快捷键的使用
最重要的快捷键1. ctrl+shift+A:万能命令行2. shift两次:查看资源文件新建工程第一步操作1. module设置把空包分层去掉,compact empty middle packag ...
- 缩放动画(ScaleTransform)
在Silverlight的动画框架中,ScaleTransform类提供了在二维空间中的坐标内进行缩放操作,通过ScaleTransform可以在水平或垂直方向的缩放和拉伸对象,以实现一个简单的缩放动 ...
- dotnet跨平台 - 使用Nginx+Docker Compose运行.NETCore项目
参考文档: https://docs.docker.com/install/linux/docker-ce/centos/ http://www.dockerinfo.net/document htt ...
- web储存的初级运用
<html> <head> <meta charset="utf-8"> <title>web存储</title>< ...
- UART串口简介
通用异步收发传输器(Universal Asynchronous Receiver Transmitter) 原理 发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出 ...
- Django 开发相关知识 整理
前言 前端ajax HTTP请求头 ajax上传文件 jsonp跨域 URL 设计 分发 url参数编码 反向生成url 视图 request对象 POST url信息 视图返回值 HttpRespo ...