Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence (思维)
2024-10-07 12:29:48
Codeforces Round #529 (Div. 3)
题意:
给你由左右括号组成的字符串,问你有多少处括号翻转过来是合法的序列
思路:
这么考虑:
如果是左括号
1)整个序列左括号个数比右括号多 2
2)在这个位置之前,所有位置的前缀左括号个数都不少于前缀右括号个数
3)在这个位置和这个位置之后,在修改后所有位置的前缀左括号个数减去前缀右括号个数大于2
(这里这么想,把左变成右,左-1,右+1)
右括号也是这样
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+;
int a[N],pre[N],post[N];
char s[N];
int n;
int main()
{
while(~scanf("%d",&n))
{
scanf("%s",s+);
int x=;
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
{
if(s[i]=='(') x++;
else x--;
a[i]=x;
}
pre[]=N,post[n]=N;
for(int i=;i<n;i++) pre[i]=min(pre[i-],a[i]);
for(int i=n-;i>=;i--) post[i]=min(post[i+],a[i]);
int ans=;
if(x!=-&&x!=)
{
printf("0\n");
}
else{
for(int i=;i<=n;i++)
{
if(s[i]=='(')
{
if(pre[i-]>=&&post[i]>=&&x==) ans++;
}
else if(pre[i-]>=&&post[i]>=-&&x==-) ans++;
}
printf("%d\n",ans);
}
}
}
最新文章
- Beta阶段第九次Scrum Meeting
- C#学习系列-文章导航
- 雷克萨斯-RC
- Markdown资源 markd
- Bootstrap_导航
- Kindeditor小改动
- hdu 4631Sad Love Story<;计算几何>;
- Sqli-labs less 28a
- 第二百三十八天 how can I 坚持
- centos6 qt ENV
- [Unity3D]Unity4全新的动画系统Mecanim
- B-number
- 使用Hexo+Github一步步搭建属于自己的博客(基础)
- ABP-Module
- angular路由模块(二)
- 【规范】前端编码规范——jquery 规范
- Laravel5 (cli)命令行执行脚本及定时任务
- Django开启国际化的支持
- ASP.NET Core 注入和获取 AppSettings 配置
- RHEL7 CentOS7 的 firewall命令简单介绍
热门文章
- kali Linux 入门(二)
- Linux架构之NFS共享存储1
- mysql 5.5和5.6版本关于timestamp not null类型字段关于null的处理
- 如何使您的Wifi路由器更安全,网络安全专家告诉您!
- git log的个性化设置
- Linux命令行工具之pidstat命令
- Angular:OnPush变化检测策略介绍
- [HG]奋斗赛M
- CentOS 7.5 通过kubeadm部署k8s-1.15.0
- 本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口