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);
}
}
}

最新文章

  1. Beta阶段第九次Scrum Meeting
  2. C#学习系列-文章导航
  3. 雷克萨斯-RC
  4. Markdown资源 markd
  5. Bootstrap_导航
  6. Kindeditor小改动
  7. hdu 4631Sad Love Story&lt;计算几何&gt;
  8. Sqli-labs less 28a
  9. 第二百三十八天 how can I 坚持
  10. centos6 qt ENV
  11. [Unity3D]Unity4全新的动画系统Mecanim
  12. B-number
  13. 使用Hexo+Github一步步搭建属于自己的博客(基础)
  14. ABP-Module
  15. angular路由模块(二)
  16. 【规范】前端编码规范——jquery 规范
  17. Laravel5 (cli)命令行执行脚本及定时任务
  18. Django开启国际化的支持
  19. ASP.NET Core 注入和获取 AppSettings 配置
  20. RHEL7 CentOS7 的 firewall命令简单介绍

热门文章

  1. kali Linux 入门(二)
  2. Linux架构之NFS共享存储1
  3. mysql 5.5和5.6版本关于timestamp not null类型字段关于null的处理
  4. 如何使您的Wifi路由器更安全,网络安全专家告诉您!
  5. git log的个性化设置
  6. Linux命令行工具之pidstat命令
  7. Angular:OnPush变化检测策略介绍
  8. [HG]奋斗赛M
  9. CentOS 7.5 通过kubeadm部署k8s-1.15.0
  10. 本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口