Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈
点击打开链接
题意:
给你一个括号序列,让你找到最长的连续的合法括号序列
然后让你输出这个括号序列的长度是多少
这么长的括号序列一共有多少个
思路:
看到括号匹配,就用stack来弄就好了
然后我们dp一下,表示以这个字符结尾的序列的长度是多少
dp[i] += dp[k.top()-1]; 从当前合法序列的最左边'('的左边的位置转移,如果是'(',dp[k.top()-1]=0,否则 dp[k.top()-1]就是上一个合法序列的长度,比如:(())()就要加上4,当然也可能是0,比如:(()))()
正确题解(qscqesze,xiper):这是一道栈+dp的综合运用的题目。如果我们遇到(,那么我们就把这个位置放进栈里面。如果遇到)的话,就pop掉栈顶,且栈顶就是这个)匹配的(位置,如果我们用l[i]来表示与i匹配的左括号位置的话。
那么我们令dp[i]表示以i结尾的括号序列的最长长度的方程为:dp[i]=dp[l[i]-1]+(i-l[i]+1)。
最后在所有的dp里面取个max就好了。来自:http://www.cnblogs.com/qscqesze/p/6418555.html
代码:
1 //http://codeforces.com/problemset/problem/5/C 2 #include <bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 const int maxn = 1e6+10; 6 const int INF = 0x3f3f3f3f; 7 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL; 8 inline ll read(){ 9 ll x=0,f=1;char ch=getchar(); 10 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 11 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 12 return x*f; 13 } 14 // 15 16 stack<int> k; 17 string s; 18 ll dp[maxn]; 19 20 int main(){ 21 cin >> s; 22 for(int i=0; i<s.size(); i++){ 23 if(s[i] == '(') 24 k.push(i); 25 else{ 26 if(!k.empty()){ 27 dp[i] = i-k.top()+1; 28 if(k.top() > 0) 29 dp[i] += dp[k.top()-1]; // 从当前合法序列的最左边'('的左边的位置转移 30 k.pop(); 31 } 32 } 33 } 34 // for(int i=0; i<s.size(); i++) 35 // cout << dp[i] << " "; 36 // cout << endl; 37 38 int ans1 = 0, ans2; 39 for(int i=0; i<s.size(); i++){ 40 if(dp[i] > ans1){ 41 ans1 = dp[i]; 42 ans2 = 1; 43 }else if(dp[i]==ans1){ 44 ans2 ++; 45 } 46 } 47 48 if(ans1 == 0) 49 cout << "0 1\n"; 50 else 51 cout << ans1 << " " << ans2 << endl; 52 53 return 0; 54 }
转载于:https://www.cnblogs.com/yxg123123/p/6827719.html
Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈相关推荐
- Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 栈/dp
C. Longest Regular Bracket Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.c ...
- 【Codeforces】CF 5 C Longest Regular Bracket Sequence(dp)
题目 传送门:QWQ 分析 洛谷题解里有一位大佬讲的很好. 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量. 代码 1 #include <bits/s ...
- 02.08 Longest Regular Bracket Sequence
最长的常规支架序列|断续器 (jxnu.edu.cn)https://acs.jxnu.edu.cn/problem/CF5C 描述: This is yet another problem deal ...
- Codeforces Beta Round #9 (Div. 2 Only) D. How many trees? dp
D. How many trees? 题目连接: http://www.codeforces.com/contest/9/problem/D Description In one very old t ...
- Codeforces Beta Round #4 (Div. 2 Only) B. Before an Exam dp
B. Before an Exam 题目连接: http://www.codeforces.com/contest/4/problem/B Description Tomorrow Peter has ...
- Educational Codeforces Round 4 C. Replace To Make Regular Bracket Sequence 栈
C. Replace To Make Regular Bracket Sequence 题目连接: http://www.codeforces.com/contest/612/problem/C De ...
- codeforces beta round 1
codeforces beta round 1 A Theatre Square in the capital city of Berland has a rectangular shape with ...
- Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)
Codeforces Beta Round #17 题目链接:点击我打开题目链接 大概题意: 给你 \(b\),\(n\),\(c\). 让你求:\((b)^{n-1}*(b-1)\%c\). \(2 ...
- Codeforces Beta Round #5 B. Center Alignment 模拟题
B. Center Alignment 题目连接: http://www.codeforces.com/contest/5/problem/B Description Almost every tex ...
最新文章
- canvas java 上传截图_在Vue项目中使用html2canvas生成页面截图并上传
- 交互两个数(不引入第三个变量)
- 10 个省时间的 PyCharm 技巧,提升工作效率,杠杠滴!
- 如何开始SLAM学习?
- linux 线程库在哪里,linux线程库
- 微信企业号 JS-SDK:上传图片
- JAVA中文字符串编码--GBK转UTF-8
- BZOJ5212 ZJOI2018历史(LCT)
- 查找出现次数超过一半的数
- AjaxControlToolkit AjaxFileUpload 为英文的解决办法
- msp430项目编程14
- ros云服务器_减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
- WLAN中直接转发和隧道转发流程与封装
- CSRF跨站点伪造请求攻击——脱库及密码修改
- 音乐播放器之QQ音乐最新api,亲测可用
- Shell 获取服务器IP地址
- 在unity3D中添加字体
- 视频浓缩中的轨迹组合技术
- python+nodejs+php+springboot+vue 社区小区报修 -社区信息管理
- Error: Cannot find module ‘process-nextick-args‘,error:0308010C:digital envelope routines::unsupport
热门文章
- 昨天和一位成功的创业者聊天,他说了一番话,有价值,与大家分享
- 那些真正有用的经验,都是和高手过招换来的
- 一个人成就的高低,努力程度只是标配
- 经销商生意平台化是趋势
- 如何给namedtuple添加docstring
- JAVA(-Xms,Xmx,Xmn-XX:newSize,-XX:MaxnewSize,-XX:PermSize,-XX:MaxPermSize)区别
- Visual Studio Code(VS Code)入门
- 如何使用SQL Server链接服务器查询Excel数据
- react sql格式化_为SQL Server数据库损坏做准备; 初步React与分析
- 如何使用SIOS DataKeeper在AWS EC2中配置较少SANSQL Server群集