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的更多相关文章

  1. Codeforces 918C The Monster(括号匹配+思维)

    题目链接:http://codeforces.com/contest/918/problem/C 题目大意:给你一串字符串,其中有'('.')'.'?'三种字符'?'可以当成'('或者')'来用,问该 ...

  2. hdu4915 判断括号匹配

    题意:       问你括号匹配是否唯一,三种字符'(','?',')',问号可以变成任何字符. 思路:       首先我们要学会判断当前串是否成立?怎么判断?我的方法是跑两遍,开三个变变量 s1 ...

  3. 第六周PTA笔记 括号匹配调整+堆放石子+最大积分+168

    括号匹配调整 如果通过插入" +"和" 1"可以从中得到格式正确的数学表达式,则将带括号的序列称为正确的. 例如,序列 "(())()",& ...

  4. 括号匹配 区间DP (经典)

    描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...

  5. YTU 3003: 括号匹配(栈和队列)

    3003: 括号匹配(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...

  6. [原]NYOJ 括号匹配系列2,5

    本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...

  7. POJ C程序设计进阶 编程题#4:括号匹配问题

    编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...

  8. 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))

    描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...

  9. 【栈思想、DP】NYOJ-15 括号匹配(二)

    括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...

随机推荐

  1. MySQL8.0-NoSQL和SQL的对比及MySQL的优势

    一.SQL VS NoSQL SQL:关系型数据库,用SQL语句来操作数据 NOSQL:非关系型数据库,NoSQL的含义是不仅仅有SQL,而实际上大多数NoSQL不用SQL来操作数据 常见的关系型数据 ...

  2. Vue之状态管理(vuex)与接口调用

    Vue之状态管理(vuex)与接口调用 一,介绍与需求 1.1,介绍 1,状态管理(vuex) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态 ...

  3. CentOS 7 下面使用 sendMail 发送邮件

    1. 修改perf的版本不然会报错: ******************************************************************* Using the def ...

  4. 【Machine Translation】CMU的NMT教程论文:最全面的神经机器翻译学习教程

    这是一篇CMU发的神经机器翻译教程论文,很全很详细,适合新手阅读,即使没有什么MT.DNN.RNN的基础知识. 另外它还配套了CMU自己的一个框架DyNet的练习. 全文共9章,从统计语言模型到DNN ...

  5. python之装饰器初识

    一.@abstractmethod 1.抽象类的作用:规范编程模式 多人开发.复杂的需求.后期的扩展 是一种用来帮助我们完成规范化的手段 2.如何定义抽象类 1,from abc import ABC ...

  6. P1033 自由落体

    原题链接 https://www.luogu.org/problemnew/show/P1033 不得不说,这个题太坑了!!!主要是题目说得不明确...... 先来看图: 看一下用红圈圈起来的部分,就 ...

  7. Linux systemctl 命令完全指南

    Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器. Systemd是一个系统管理守护进程.工具和库的集合,用于取代System V初始进程.Systemd的功能是 ...

  8. linux中的find命令常用场景

    1.find   file.txt            在当前目录下,查找file.txt是否存在 2.find . -name file.txt     在当前目录下,递归查找file.txt文件 ...

  9. openstack项目【day23】:keystone组件基础

    本节内容 一 什么是keystone 二 为何要有keystone 三 keystone的功能 四 keystone概念详解 五 keystone内包含的组件 六 keystone与openstack ...

  10. linux,pthread(转)

    互斥量.条件变量与pthread_cond_wait()函数的使用,详解(二)   1.Linux“线程” 进程与线程之间是有区别的,不过linux内核只提供了轻量进程的支持,未实现线程模型.Linu ...