cf里好像经常出 这些题,一般贪心是搞不了的。。

918C 问有多少子段[l,r]满足合法括号

先从左往右扫,如果问号+‘(' 数量 >= ')' 说明这段区间的 ) 是满足条件的

然后再从右往左扫,如果问号+’)‘数量 >= '(' 说明这段区间的 ’(‘是满足条件的

这就是一个区间合法的充要条件

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 5005
  4. int mp[maxn][maxn];
  5. int len;
  6. char s[maxn];
  7. int main(){
  8. cin>>s;
  9. len=strlen(s);
  10. for(int i=;i<len;i++){
  11. int a=,b=;
  12. for(int j=i;j<len;j++){
  13. if(s[j]==')')b++;
  14. else a++;
  15. if(a>=b)mp[i][j]++;
  16. else break;
  17. }
  18. }
  19. for(int i=len-;i>=;i--){
  20. int a=,b=;
  21. for(int j=i;j>=;j--){
  22. if(s[j]=='(')b++;
  23. else a++;
  24. if(a>=b)mp[j][i]++;
  25. else break;
  26. }
  27. }
  28. int ans=;
  29. for(int i=;i<len;i++)
  30. for(int j=i;j<len;j++)
  31. if(mp[i][j]== && (j-i)%)
  32. ans++;
  33. cout<<ans<<endl;
  34. }

1153C 去掉开头末尾的括号匹配问题

问一个区间的[l,r]是否合法。。傻逼贪心明显错的啊

但是很傻比的题啊为什么我写不出来,

除了用上面那种扫两次的做法,还有一种做法是从左往右扫描,先凑出n/2个’(',然后模拟栈来匹配括号即可

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. char s[];
  4. int n;
  5. int main(){
  6. cin>>n>>s;
  7. int cnt=,flag=,tot=;
  8. if(s[]==')' || s[n-]=='(')flag=;
  9. if(n<)flag=;
  10. if(flag){puts(":(");return ;}
  11. s[]='(',s[n-]=')';
  12.  
  13. for(int i=;i<n-;i++)
  14. if(s[i]=='(')cnt++;
  15. for(int i=;i<n-;i++)
  16. if(s[i]=='?'){
  17. if(cnt<(n-)/)s[i]='(',cnt++;
  18. else s[i]=')';
  19. }
  20. cnt=;
  21. for(int i=;i<n-;i++)
  22. if(s[i]=='(')cnt++;
  23. else {
  24. if(cnt)cnt--;
  25. else flag=;
  26. }
  27. if(flag || cnt){puts(":(");return ;}
  28. cout<<s;
  29. }

带问号的括号匹配问题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. 【问题解决方案】下载GitHub里的单个文件

    背景:在不把整个项目弄下来的情况下 步骤:raw --> 右击 --> 链接另存为... 参考:如何用浏览器从 github 上下载某项目中的单个文本文件

  2. 基于Flask 实现Web微信登陆

    网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中 ...

  3. ABP项目启动及源代码结构

    在整体介绍ABP项目之前我们需要从官方网站下载模板项目,下载以后放到一个本地目录下,启动VS打开源代码.具体下载的步骤如下: 一   创建ABP项目模板 1 进入官方网站然后选择特定的样板项目. 2 ...

  4. c语言提高(第二次作业)

    1. 画出字符串一级指针内存四区模型 #include <stdio.h> #include <string.h> int main(void) { char buf[20]= ...

  5. vue 点击当前元素添加class 去掉兄弟的class 获取当前点击元素的文字

    点击当前标签给其添加class,兄弟标签class删除 然后获取当前点击元素的文字 演示地址: https://xibushijie.github.io/static/addClass.html &l ...

  6. CSS之样式属性(背景固定、圆形头像、模态框)

    CSS属性 一.宽和高 width属性可以为元素设置宽度. height属性可以为元素设置高度. 块级标签才能设置宽度,内联标签的宽度由内容来决定. div {width: 1000px;backgr ...

  7. Android Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency

    错误内容: Error:Execution failed for task ':app:preDebugAndroidTestBuild'.> Conflict with dependency ...

  8. Codeforce Round #554 Div.2 C - Neko does Maths

    数论 gcd 看到这个题其实知道应该是和(a+k)(b+k)/gcd(a+k,b+k)有关,但是之后推了半天,思路全无. 然而..有一个引理: gcd(a, b) = gcd(a, b - a) = ...

  9. Scrapy 框架 中间件,信号,定制命令

    中间件 下载器中间件 写中间件 from scrapy.http import HtmlResponse from scrapy.http import Request class Md1(objec ...

  10. dubbo接口demo开发

    接口需求 客户端输入uncleyong(当然,也可以输入其它字符串),服务端返回hello uncleyong 开发环境 jdk + idea + maven + zookeeper jdk安装 id ...