带问号的括号匹配问题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 括号匹配(二)
括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...
随机推荐
- Jmeter录制手机app脚本
转:http://www.cnblogs.com/yangxia-test/p/5484616.html 环境准备: 1.手机 2.wifi 3.Jmeter 具体步骤: 1.启动Jmeter ...
- AirBnB春招笔试题
试题说明 笔试题只有一道,限时1小时. 模拟一个战争外交游戏,游戏中定义了三种操作: A city1 Hold : 军队A 占领了city1 A city1 Move city2 : 军队A从city ...
- 在CENTOS上源码搭建LNMP环境
前言 1.操作前提: CentOS Linux release 7.5.1804: sudo用户(需要root权限): 2.需要安装的组件: nginx稳定版:nginx-1.14.0: MariaD ...
- java垃圾回收GC
垃圾回收时,暂停虚拟机运行 基础假设:大部分对象只存在很短的时间 对于新生代,Minor GC经常会发生 Major/Full GC会对老生代做GC 老生代GC采用Compact算法,移动形成完整的空 ...
- mybatis中的几个注意的地方
1.首先定义一个sql标签,一定要定义唯一id<sql id="Base_Column_List" >name,age</sql>2.然后通过id引用< ...
- Manacher算法详解
问题 什么是回文串,如果一个字符串正着度读和反着读是一样的,这个字符串就被称为回文串. such as noon level aaa bbb 既然有了回文,那就要有关于回文的问题,于是就有了-- 最长 ...
- Vue——报错总结
[Vue warn]: Cannot find element: #app [报错原因] 1. 把对应js放在了head标签里面,页面没有加载完成就进行渲染,导致找不到#app. 2.加了<te ...
- ICPC中国南昌国家邀请赛和国际丝绸之路规划大赛预选赛 I J
I. Max answer 链接:https://nanti.jisuanke.com/t/38228 思路: 枚举最小值,单调栈确定最小值的边界,用线段树+前缀和维护最小值的左右区间 实现代码: # ...
- python之路day03--数据类型分析,转换,索引切片,str常用操作方法
数据类型整体分析 int :用于计算bool:True False 用户判断str:少量数据的存储 list:列表 储存大量数据 上亿数据[1,2,3,'zzy',[aa]] 元组:只读列表(1,23 ...
- 测试框架httpclent 3.获取cookie的信息,然后带cookies去发送请求
在properties文件里面: startupWithCookies.json [ { "description":"这是一个会返回cookies信息的get请求&qu ...