贪心+stack Codeforces Beta Round #5 C. Longest Regular Bracket Sequence
2015-06-03 14:10
363 查看
题目传送门
/* 题意:求最长括号匹配的长度和它的个数 贪心+stack:用栈存放最近的左括号的位置,若是有右括号匹配,则记录它们的长度,更新最大值,可以在O (n)解决 详细解释:http://blog.csdn.net/taoxin52/article/details/26012167 */ #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <stack> using namespace std; const int MAXN = 1e6 + 10; const int INF = 0x3f3f3f3f; char s[MAXN]; int len[MAXN]; stack<int> S; int main(void) //Codeforces Beta Round #5 C. Longest Regular Bracket Sequence { // freopen ("C.in", "r", stdin); while (scanf ("%s", s) == 1) { while (!S.empty ()) S.pop (); memset (len, 0, sizeof (len)); int mx = 0; int cnt = 0; for (int i=0; s[i]; ++i) { if (s[i] == '(') S.push (i); else { if (!S.empty ()) { int p = S.top (); S.pop (); len[i] = (p > 0 ? len[p-1] : 0) + (i - p + 1); } } if (len[i] > mx) {mx = len[i]; cnt = 1;} else if (len[i] == mx) {cnt++;} } if (mx == 0) puts ("0 1"); else printf ("%d %d\n", mx, cnt); } return 0; }
相关文章推荐
- Java中的break和continue关键字使用总结
- ExtJs中Ext.Ajax.request()跟getForm().submit()得用法
- iOS5中UIViewController的新方法 addChildViewController
- IOS可以拖动的UIButton
- iOS开发UI基础—32直接使用UITableView Controller
- iOS开发UI高级—01常见的项目文件介绍
- Flex builder经常会抛出:进程已终止,没有建立到调试器的连接。error while loading initial content的解决方法
- iOS开发UI基础—30在UItableview中实现加载更多功能
- iOS学习(5)—— UIScrollView
- iOS开发UI基础—29UIScrollView控件实现图片轮播
- iOS开发UI基础—28使用UItableview完成一个简单的QQ好友列表(二)
- Getting Started · Building a RESTful Web Service
- iOS开发UI基础—26简单介绍静态单元格的使用
- iOS开发UI基础—27使用UItableview完成一个简单的QQ好友列表(一)
- iOS开发UI基础—25UITableview控件使用小结
- iOS开发UI基础—24使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- break和continue语句
- iOS开发UI基础—23使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- UILabel控件
- iOS开发UI基础—22实现UItableview控件数据刷新