Codeforces Round #350 (Div. 2) E - Correct Bracket Sequence Editor(并查集)

网络流题目合集 属实狠活 HDU 2883 kebab还是区间k重覆盖的变形,然而每想到 就这? HDU 3315 My Brute HDU 3947 River Problem 区间k重覆盖的变形 拉了 阅读详情

题意:

给你一个由’(”)’组成的字符串,现有要进行三种操作,第一种是将光标左移,第二种是光标右移,第三种是删除当前光标所指的括号及其对应括号的中间所有的值(题意保证括号都能匹配),光标删完后到下一个,后面没东西了就到前一个,问操作完字符串变成了什么

思路:

记录每个括号的前一个是谁,后一个是谁,自己对应的是谁,以及自己是否被删去了。
那么我们在进行第一,二个操作的时候,就可以直接找到上一个/下一个是谁。
进行第三个操作的时候,我们先删去要删除的括号区间,然后我们把删去后,区间左右的括号的前后关系处理一下即可

错误及反思:

边界处理和光标移动,一共多了四个特判,详见代码

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=500100;
char arr[maxn],oper[maxn];//arr是原字符串  oper是操作字符串
int lef[maxn],righ[maxn],dy[maxn];//lef是前一个 righ是后一个 dy是自己对应的另一个括号坐标
bool did[maxn];//有没有删去
int n,m,p;
int main(){
    scanf("%d%d%d",&n,&m,&p);
    p--;
    scanf("%s",arr);
    scanf("%s",oper);
    lef[0]=0;           //初始化前一个和后一个的位置
    for(int i=1;i<n;i++)
        lef[i]=i-1;
    righ[n-1]=n-1;
    for(int i=0;i<n-1;i++)
        righ[i]=i+1;
    stack<int> s;
    for(int i=0;i<n;i++)    //寻找对应的标号
    {
        if(arr[i]=='(')
            s.push(i);
        else
        {

            int temp=s.top();
            s.pop();
            dy[i]=temp;
            dy[temp]=i;
        }
    }
    for(int i=0;i<m;i++)
    {
        if(oper[i]=='L')        //前移
            p=lef[p];
        else if(oper[i]=='R')   //后移
            p=righ[p];
        else
        {
            if(arr[p]=='('){
                for(int j=p;j<=dy[p];)//删除
                {
                    did[j]=true;
                    if(j==n-1&&righ[j]==n-1)
                        break;
                    j=righ[j];
                }
                int l=lef[p];   //把删去后的前后关系进行对应
                righ[l]=righ[dy[p]];
                lef[righ[dy[p]]]=l;

                if(!did[righ[dy[p]]])
                    p=righ[dy[p]];
                else p=lef[p];
            }
            else
            {
                for(int j=p;j>=dy[p];)
                {
                    did[j]=true;
                    if(j==0&&lef[j]==0)
                        break;

                    j=lef[j];

                }
                int r=righ[p];
                lef[r]=lef[dy[p]];
                righ[lef[dy[p]]]=r;

                if(!did[righ[p]])
                    p=righ[p];
                else p=lef[dy[p]];

            }
        }

    }
    for(int k=0;k<n;k++)
    {
        if(!did[k])
            printf("%c",arr[k]);
    }
    puts("");
}
CentOS7 安装天气分型软件cost733过程详解 cost733是一款天气分型软件,其内置的一些算法可以帮助气象工作者进行天气类型划分等(我也是初学者,仅仅知道一些皮毛),但是网上找到的安装办法比较少,并且总会出现一些报错,试了一晚上,终于将安装办法调通了,希望可以帮助到大家 阅读详情

相关推荐

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 884

Codeforces Round #350 (Div. 2) E:Correct Bracket Sequence Editor (简单链表模拟)

*题目描述: 你需要写一个括号序列编辑器。你有一个长度为n的括号序列,以及m个操作,还有初始时光标的位置。每次的操作有: 1.将光标左移一位 2.将光标右移一位 3.删除光标所在的括号以及和它匹配的括号中间的部分。 *题解: 先用一个栈来匹配左右括号序列,然后再用链表维护整个括号序列。每次删除操作就在链表上进行区间删除。(我真的是数据结构写傻了,第一反应居然是Treap

Ezereal的博客 501

基于deepseek+dify+达梦实现自然语言查询数据库

自然语言查询数据库信息

weixin_43974943的博客 1592

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 模拟

题目链接: http://codeforces.com/contest/670/problem/E 题解: 用STL的list和stack模拟的,没想到跑的还挺快。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<map> #include&l...

weixin_30904593的博客 135

RabbitMq安装

本文详细介绍了在CentOS7系统上离线部署RabbitMQ4.3.2的完整流程。主要内容包括:1)准备RabbitMQ安装包、Erlang依赖和socat网络工具;2)安装系统编译依赖并编译安装Erlang;3)部署RabbitMQ服务,配置环境变量和socat依赖;4)启用Web管理插件并创建管理员账号;5)配置防火墙放行端口;6)设置Systemd开机自启服务;7)提供常用运维命令。文档特别强调离线部署注意事项,包括socat依赖、版本兼容性、账号安全及主机名配置等问题,为生产环境部署提供完整解决方案

sinat_25821779的博客 323

从零构建AI辅助逆向分析环境:JADX-MCP与LLM的实战集成指南

本文详细介绍了如何从零构建AI辅助逆向分析环境,通过集成JADX-MCP与LLM技术,提升Android应用逆向工程效率。文章涵盖环境搭建、插件安装、MCP服务器配置及实战案例分析,帮助开发者快速掌握AI在代码理解、漏洞挖掘和自动化文档生成中的应用。

weixin_27875131的博客 839

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor【模拟+链表】

#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<stack> using namespace std; const int N=500000+10; struct node { int from,next,to; }p[N];char s[N],c[N]; int mai

禅境花园 502

【100%通过率】华为od 机试真题 C语言 实现【补种未成活胡杨】

近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?

MISAYAONE的博客 1653

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor (链表)

题目链接:http://codeforces.com/contest/670/problem/E 给你n长度的括号字符,m个操作,光标初始位置是p,'D'操作表示删除当前光标所在的字符对应的括号字符以内的所有字符(比如'(()())'),'R'操作表示右移光标,'L'操作表示左移光标。删除操作后光标向右移,要是再向右移没有字符的话,那就停在最后的字符上了。问你最后的括号字符是怎么样的。 这题用...

weixin_30940783的博客 195

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1068

2026年职业院校技能大赛中职移动应用与开发—数字生活APP原型设计参考答案(含素材)

本模块以产品原型为目标,考查参赛选手熟练收集、分析和归纳客户需求,清晰梳理业务流程,熟练使用UI设计软件进行产品UI/UE设计,掌握正确的UI配色方案,设计出符合业务逻辑的人体工学移动App 原型优秀作品。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 567

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 栈 链表

E. Correct Bracket Sequence Editor 题目连接: http://www.codeforces.com/contest/670/problem/E Description Recently Polycarp started to develop a text editor that works only with correct bracket sequences (...

weixin_30354675的博客 113

Oracle EBS(R12+)通过Multi-Org 多组织架构、Multi-Ledger 多账簿、SLA 子分类账会计、多币种引擎、多会计政策并行五大核心能力,为跨国企业提供一体化、自动化、合规的

Oracle EBS(R12+)提供全球会计核算解决方案,通过Multi-Org多组织架构实现跨国集团数据隔离与共享,支持四层组织结构(业务组→法律实体→经营单位→库存组织)。Multi-Ledger多账簿功能允许一笔业务多准则自动核算,包含主账簿、辅助账簿和报告币种。系统内置多币种处理引擎,覆盖全流程货币业务,支持自动重估、再计量和折算。通过SLA子分类账会计实现多会计政策并行处理,满足不同国家会计准则和税制要求。该方案可同时支持本地法定、集团合并及管理分析需求,实现全球财务数据集中管理,提升合规性和运营

金牌架构师 553

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor (括号匹配和删除,输出最后的括号序列)

E. Correct Bracket Sequence Editor time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Recently Polycarp starte

_zidaoziyan的博客 1182

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 线段树模拟

E. Correct Bracket Sequence Editor Recently Polycarp started to develop a text editor that works only with correct bracket sequences (abbreviated as CBS). Note that a bracket se...

weixin_30567471的博客 136

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NEERC 17 I Interactive Sort (交互题)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;给出1到n这n个数的任意一个排列,然后奇数按顺序分到o数组,偶数按顺序分到e数组,你每次可以询问e数组中第i个和o数组中第j个的大小情况,查询结束后输出结果,查询次数最多30 000次,n≥1000n≥1000n\ge1000 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;我...

Roll_Keyboard的博客 705

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NEERC 17 G The Great Wall (treap)

题意: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 给你一个数列,每个点有abc三个值,现在让你画两个区间x,y,区间大小为r,区间不可以完全重合,当一个点没有被区间覆盖时值为a,被一个区间覆盖时值为b,两个区间为c,问第k小的数列数值总和为多少 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp

Roll_Keyboard的博客 694

Codeforces 85D. Sum of Medians (线段树)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 三种操作,1.加入一个数,2,删除一个数,3,询问经过排序以后,所有下标mod5mod5mod5余3的数的和 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 注意到,当我们加入一个数以后,会让所有后面的数后移一位,删除会使得后面全部前移一位,每次移动都使得下标变化1,所以我...

Roll_Keyboard的博客 652

Codeforces Round #437 (Div. 2) B. Save the problem!

题意:给你一个数字A,要你给出一个价格和一堆硬币种类,要让这些硬币组成这个价格的方案数为A思路:想了很久没想出来,答案是除了A是1的时候,价格都是2*(A-1),硬币只有1和2,因为,你用(A-1)个2元0个1元,然后是(A-2)个2个1元,这样方案数就相当于A-1减到0,共A种,真的有点巧妙。。。错误及反思:其实自己写个完全背包打表也许能看出规律吧,可惜完全没往这个方向想代码:#include<b

Roll_Keyboard的博客 634

Codeforces Round #104 (Div. 1) E. Lucky Queries (线段树)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 长度为n的47串,两种操作,一种是区间变换,即4变7,7变4,一种是询问,问最长的非严格递增子序列长度 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 线段树维护即可,47可以抽象成01串,变换就是异或,存储全0串最长长度,全1串最长长度,000..111串长度,111…0...

Roll_Keyboard的博客 564

NEERC 17 L Laminar Family (树链剖分)

题意: &nbsp;&nbsp;&nbsp;&nbsp; 给你一颗树,每次选取一个路径,把路径上的所有点加入到一个集合里面,问最后的集合是否两两之间满足 A∈BA∈B A\in B 或者B∈AB∈AB\in A或者A∪B=∅A∪B=∅A\cup B = \emptyset 思路: &nbsp;&nbsp;&nbsp;&nbsp;我们发现,如果最后是符合条件的,那么必定是一个集合被另一个集合...

Roll_Keyboard的博客 549

Codeforces Round #437 (Div. 2)E. Buy Low Sell High(优先队列)

题意:给你n个数字,现在你可以有以下的操作,买一个数字,再在之后卖出去,问最多能赚多少钱思路:对于一个数字,如果之后的的数字如果比这个数字还大,那么我们可以当作之前买了一个,然后现在卖出去,可是这样的做法存在问题,比如1,2,3,66,按照那样的做法,我们的收益是2-1+66-3=64,然而66-1+3-2=66,很明显之前的做法存在错误,错误的核心在于对于买卖对象确认的错误 那么,如果我们把之前

Roll_Keyboard的博客 521

Codeforces Round #442 (Div. 2) F. Ann and Books (莫队算法+离散化)

题意:给你一n个数字,其中有的是第一类,有的是第二类,接着是m个查询,问你某个区间内,连续的子区间的第一类的和减去第二类的和恰好为k的子区间一共多少个。思路:莫队算法及离散化。这个题不是一般的毒,卡logn。 首先对于这个题目,只查询不修改,很容易想到莫队算法。首先处理出前缀和,那么我val[i]-val[j]就能表示aj+1+aj+2+...+ai{a_{j+1}+{a_{j+2}+...+{a

Roll_Keyboard的博客 471

codeforces 161D D. Distance in Tree (树分治)

题意:问一颗树有多少个路径距离为k思路:是poj1741的简单版,在树分治的时候,对于某个重心只要维护某个长度的有多少即可,因为k很小,所以可以直接开个数组存错误及反思:中间加的过程忘了会爆int了。。。代码:#include<bits/stdc++.h> #define fi first #define se second using namespace std; const int N = 50

Roll_Keyboard的博客 462

Codeforces Daily (Round 370-410)

—————————————————————————- 时间:8.1 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;am

Roll_Keyboard的博客 460
上一篇: Codeforces Round #350 (Div. 2) C - Cinema (map)
下一篇: POJ 1743 Musical Theme(二分+后缀数组)
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值