妖梦斩木棒

思路:

  略坑爹;

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
#define maxm maxn<<2
int n,m,L[maxm],R[maxm],mid[maxm],dis[maxm];
bool xx[maxm],ll[maxm],rr[maxm];
struct AnsType {
int dis;
bool l,r,x;
};
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'')Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
void updata(int now)
{
xx[now]=xx[now<<]&xx[now<<|];
dis[now]=dis[now<<]+dis[now<<|];
if(rr[now<<]&&ll[now<<|]&&!xx[now<<]&&!xx[now<<|]) dis[now]++;
ll[now]=xx[now<<]?ll[now<<|]:ll[now<<];
rr[now]=xx[now<<|]?rr[now<<]:rr[now<<|];
}
struct AnsType node(AnsType a,AnsType b)
{
AnsType res;
res.x=a.x&b.x;
res.l=a.x?b.l:a.l;
res.r=b.x?a.r:b.r;
res.dis=a.dis+b.dis;
if(a.r&&b.l&&!a.x&&!b.x) res.dis++;
return res;
}
void build(int now,int l,int r)
{
L[now]=l,R[now]=r;
if(l==r)
{
if(l==) rr[now]=;
else if(r==n) ll[now]=;
else xx[now]=,ll[now]=,rr[now]=;
return;
}
mid[now]=l+r>>;
build(now<<,l,mid[now]);
build(now<<|,mid[now]+,r);
updata(now);
}
void updata(int now,int to,int t)
{
if(L[now]==R[now])
{
ll[now]=rr[now]=xx[now]=;
if(t==) xx[now]=,ll[now]=,rr[now]=;
if(t==) ll[now]=;
if(t==) rr[now]=;
return ;
}
if(to<=mid[now]) updata(now<<,to,t);
else updata(now<<|,to,t);
updata(now);
}
AnsType query(int now,int l,int r)
{
if(L[now]==l&&R[now]==r) return (AnsType){dis[now],ll[now],rr[now],xx[now]};
if(r<=mid[now]) return query(now<<,l,r);
else if(l>mid[now]) return query(now<<|,l,r);
else return node(query(now<<,l,mid[now]),query(now<<|,mid[now]+,r));
}
int main()
{
in(n),in(m),build(,,n);
int op,l,r,x;char ch[];
while(m--)
{
in(op);
if(op==)
{
in(x),scanf("%s",ch);
if(ch[]=='X') ch[]=;
else if(ch[]==')') ch[]=;
else ch[]=;
updata(,x,ch[]);
}
else
{
in(l),in(r);
AnsType res=query(,l,r);
printf("%d\n",res.dis);
}
}
return ;
}

AC日记——妖梦斩木棒 洛谷 P3797的更多相关文章

  1. AC日记——妖梦拼木棒 洛谷 P3799

    妖梦拼木棒 思路: 神特么题: 代码: #include <bits/stdc++.h> using namespace std; #define mod 1000000007LL int ...

  2. 洛谷 P3797 妖梦斩木棒 解题报告

    P3797 妖梦斩木棒 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的\(n\)段.现在这个木棒可以看做 ...

  3. 洛谷P3797 妖梦斩木棒

    P3797 妖梦斩木棒 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看 ...

  4. 洛谷 P3797 妖梦斩木棒

    https://www.luogu.org/problem/show?pid=3797 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了 ...

  5. [luogu P3797] 妖梦斩木棒 [线段树]

    题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的 ...

  6. [Luogu3797] 妖梦斩木棒

    题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的 ...

  7. Luogu P3797 妖梦斩木棒

    解题思路 用线段树做这个就不用说了吧,但是要维护的东西确实很神奇.在每一个节点上都维护一个$lbkt$,表示这个区间上最靠左的右括号的位置:一个$rbkt$,表示这个区间上最靠右的左括号的位置.还有一 ...

  8. AC日记——校门外的树 洛谷 P1047

    题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种 ...

  9. AC日记——无线网络发射器选址 洛谷 P2038

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

随机推荐

  1. [mysql][【优化集合】mysql数据库优化集合

    三个层面: 1.系统层面 2.mysql配置参数 3.sql语句优化 =========================================================== 一.系统层 ...

  2. bzoj 1100 [POI2007]对称轴osi manacher

    [POI2007]对称轴osi Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 771  Solved: 307[Submit][Status][Dis ...

  3. zookeeper的maxSessionTimeout默认值导致hbase regionserver超时

    zookeeper的maxSessionTimeout默认值导致hbase regionserver超时 在hbase中经常会遇到regionserver挂掉的情况,查看日志会看到这样的错误信息 20 ...

  4. UVALive-3263 That Nice Euler Circuit (几何欧拉定理)

    https://vjudge.net/problem/UVALive-3263 平面上有一个n个端点的一笔画,第n个端点总是和第一个端点重合,因此图示一条闭合曲线. 组成一笔画的线段可以相交,但不会部 ...

  5. LightOJ 1218 概率水题(几何分布)

    题意:给你一个n面骰子,问你投出所有面需要的次数的期望值是多少. 题解:放在过去估计秒解,结果现在自己想好久,还查了下,有人用极限证明...实际上仔细想想这种情况投出与前面不一样的概率p的倒数就是次数 ...

  6. Freemarker的配置与使用

    1.在pro.xml配置文件中引入架包 <!--freemarker-->  <dependency>   <groupId>freemarker</grou ...

  7. JS之document对象(找元素、操作内容、操作属性、操作样式及4道例题)

    document对象 一.找元素 1.根据id找 示例: <input id = "a" type="button" value="找元素&qu ...

  8. 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    第2课  CC2530的通用I/O端口输入和输出控制 小蜜蜂科教 / 广东职业技术学院  欧浩源 [通用I/O端口视频教程:https://v.qq.com/x/page/x0793aol7us.ht ...

  9. js_实现给未来元素添加事件。

    未来元素:不是一个页面上的元素,是通过js或者通过后台直接渲染在页面上的元素,也就是说这些元素不是直接写在document中的. 1.对于未来元素,我们想直接用js或者jq操作它们是不起作用的. $( ...

  10. javascript中的addEventListener与attchEvent

    1.addEventListener 该方法用于向指定元素添加事件句柄 浏览器的支持情况为chrome1.0.ie9+.fireFox1.0.opera7.0 该方法包含三个参数event, func ...