带问号的括号匹配问题918C 1153C
cf里好像经常出 这些题,一般贪心是搞不了的。。
918C 问有多少子段[l,r]满足合法括号
先从左往右扫,如果问号+‘(' 数量 >= ')' 说明这段区间的 ) 是满足条件的
然后再从右往左扫,如果问号+’)‘数量 >= '(' 说明这段区间的 ’(‘是满足条件的
这就是一个区间合法的充要条件
#include<bits/stdc++.h>
using namespace std;
#define maxn 5005
int mp[maxn][maxn];
int len;
char s[maxn];
int main(){
cin>>s;
len=strlen(s);
for(int i=;i<len;i++){
int a=,b=;
for(int j=i;j<len;j++){
if(s[j]==')')b++;
else a++;
if(a>=b)mp[i][j]++;
else break;
}
}
for(int i=len-;i>=;i--){
int a=,b=;
for(int j=i;j>=;j--){
if(s[j]=='(')b++;
else a++;
if(a>=b)mp[j][i]++;
else break;
}
}
int ans=;
for(int i=;i<len;i++)
for(int j=i;j<len;j++)
if(mp[i][j]== && (j-i)%)
ans++;
cout<<ans<<endl;
}
1153C 去掉开头末尾的括号匹配问题
问一个区间的[l,r]是否合法。。傻逼贪心明显错的啊
但是很傻比的题啊为什么我写不出来,
除了用上面那种扫两次的做法,还有一种做法是从左往右扫描,先凑出n/2个’(',然后模拟栈来匹配括号即可
#include<bits/stdc++.h>
using namespace std;
char s[];
int n;
int main(){
cin>>n>>s;
int cnt=,flag=,tot=;
if(s[]==')' || s[n-]=='(')flag=;
if(n<)flag=;
if(flag){puts(":(");return ;}
s[]='(',s[n-]=')'; for(int i=;i<n-;i++)
if(s[i]=='(')cnt++;
for(int i=;i<n-;i++)
if(s[i]=='?'){
if(cnt<(n-)/)s[i]='(',cnt++;
else s[i]=')';
}
cnt=;
for(int i=;i<n-;i++)
if(s[i]=='(')cnt++;
else {
if(cnt)cnt--;
else flag=;
}
if(flag || cnt){puts(":(");return ;}
cout<<s;
}
带问号的括号匹配问题918C 1153C的更多相关文章
- Codeforces 918C The Monster(括号匹配+思维)
题目链接:http://codeforces.com/contest/918/problem/C 题目大意:给你一串字符串,其中有'('.')'.'?'三种字符'?'可以当成'('或者')'来用,问该 ...
- hdu4915 判断括号匹配
题意: 问你括号匹配是否唯一,三种字符'(','?',')',问号可以变成任何字符. 思路: 首先我们要学会判断当前串是否成立?怎么判断?我的方法是跑两遍,开三个变变量 s1 ...
- 第六周PTA笔记 括号匹配调整+堆放石子+最大积分+168
括号匹配调整 如果通过插入" +"和" 1"可以从中得到格式正确的数学表达式,则将带括号的序列称为正确的. 例如,序列 "(())()",& ...
- 括号匹配 区间DP (经典)
描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...
- YTU 3003: 括号匹配(栈和队列)
3003: 括号匹配(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...
- [原]NYOJ 括号匹配系列2,5
本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...
- POJ C程序设计进阶 编程题#4:括号匹配问题
编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 【栈思想、DP】NYOJ-15 括号匹配(二)
括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...
随机推荐
- JQ——利用一个开关,点击一个按钮完成展开收起功能
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 数据分析之Pandas
一.Pandas介绍 1.介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. ...
- Linux查看文件以及磁盘空间大小管理(转)
(1)查看文件大小 查看当前文件夹下所有文件大小(包括子文件夹) du -sh # du -h15M ./package16K ./.fontconfig4.0K . ...
- golang 笔记
golang 的坑 package main import ( "fmt" "net/http" "time" ) func Hello(w ...
- 配置sudo记录日志
sudosudo命令用来以其他身份来执行命令,预设的身份为root.在/etc/sudoers中设置了可执行sudo指令的用户.若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员.用户使用 ...
- redis-sentinel高可用配置(2)
一:说明 前面我们已经配置了redis的主从配置(链接),这种主从架构有一个问题,当主master出现了故障了,怎么切换到从服务器上呢? 第一种:手动切换, 这种肯定会造成比较长一段时间的用户不能访问 ...
- Docker:企业级私有仓库harbor[十六]
一.安装配置 1.下载安装包 链接:https://pan.baidu.com/s/1Z9I7zYXSt-8ve3lFT2YCeg 提取码:iuqj 2.安装docker和docker-compose ...
- 轴对称 Navier-Stokes 方程组的点态正则性准则 II
在 [Wei, Dongyi. Regularity criterion to the axially symmetric Navier-Stokes equations. J. Math. Anal ...
- Vorticity directions 1: self-improving property of the vorticity
在 [Li, Siran. "On Vortex Alignment and Boundedness of $ L^ q $ Norm of Vorticity." arXiv p ...
- Matplotlib画图详解
from matplotlib import pyplot as plt #调节图形大小,宽,高 plt.figure(figsize=(6,9)) #定义饼状图的标签,标签是列表 labels = ...