博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDU 6299】Balanced Sequence
阅读量:4328 次
发布时间:2019-06-06

本文共 2640 字,大约阅读时间需要 8 分钟。

【链接】

【题意】

在这里输入题意

【题解】

我们贪心地把每一个括号序列能匹配都按照栈的规则都匹配出来。
(直接递增匹配对数*2就可以了
最后栈里面就只剩下类似))))(((((((这样的形式了。
现在就相当于有很多个这种字符串了。
让你把它们拼接在一起。
可以用sort贪心一下。
优先把(多的序列放在前面一点。
具体的比较函数这么写
里注释的括号用于参考
(实在不知道原理,就一种一种猜吧。。。。
sort完之后再模拟一下括号匹配就好

bool operator < (const abc &b) const{        //))))((((( (((((        if (left_brackets>right_brackets){            //))((((((((((((((            if (b.left_brackets>b.right_brackets)                    return right_brackets
b.left_brackets; }else{ //)))))(((((((((((((( return false; //如果这个左括号那么多的话,就放左边去吧。 } } }

【代码】

#include 
#define LL long long#define rep1(i,a,b) for (int i = a;i <= b;i++)#define rep2(i,a,b) for (int i = a;i >= b;i--)#define all(x) x.begin(),x.end()#define pb push_back#define lson l,mid,rt<<1#define rei(x) scanf("%d",&x)#define rel(x) scanf("%lld",&x)#define res(x) scanf("%s",x)#define rson mid+1,r,rt<<1|1using namespace std;const double pi = acos(-1);const int dx[4] = {0,0,1,-1};const int dy[4] = {1,-1,0,0};const int N = 1e5;struct abc{ int right_brackets,left_brackets; //))))))))(( //))((((((((((( bool operator < (const abc &b) const{ //))))((((( ((((( if (left_brackets>right_brackets){ //))(((((((((((((( if (b.left_brackets>b.right_brackets) return right_brackets
b.left_brackets; }else{ return false; } } }}a[N+10];int n;char s[N+10];int sta[N+10];int main(){ #ifdef LOCAL_DEFINE freopen("rush_in.txt", "r", stdin); #endif int T; rei(T); while(T--){ long long ans = 0; rei(n); for (int i = 1;i <= n;i++){ a[i].left_brackets = a[i].right_brackets = 0; res(s); int len = strlen(s); int top = 0; for (int j = 0;j < len;j++) if (s[j]==')'){ if (top>0 && sta[top]==0){ top--; ans+=2; }else sta[++top] = 1; }else{ sta[++top] = 0; } rep1(j,1,top) if (sta[j]==1) a[i].right_brackets++; else a[i].left_brackets++; } sort(a+1,a+1+n); int now = 0; rep1(i,1,n){ int temp = min(now,a[i].right_brackets); now-=temp; ans+=(temp*2); now+=a[i].left_brackets; } printf("%lld\n",ans); } return 0;}

转载于:https://www.cnblogs.com/AWCXV/p/9362439.html

你可能感兴趣的文章
php opcode缓存
查看>>
springcloud之Feign、ribbon设置超时时间和重试机制的总结
查看>>
Go 结构体
查看>>
LINQ巩固
查看>>
观看杨老师(杨旭)Asp.Net Core MVC入门教程记录
查看>>
UIDynamic(物理仿真)
查看>>
Windows下安装Redis
查看>>
迷宫实现
查看>>
【字符编码】Java字符编码详细解答及问题探讨
查看>>
学习操作系统导图
查看>>
在线的JSON formate工具
查看>>
winform非常实用的程序退出方法!!!!!(转自博客园)
查看>>
xml解析
查看>>
centos安装vim
查看>>
linux工作调度(计划任务)
查看>>
hdu--1698 Just a Hook(线段树+区间更新+懒惰标记)
查看>>
Python学习笔记-EXCEL操作
查看>>
CListCtrlEx:一个支持文件拖放和实时监视的列表控件——用未公开API函数实现Shell实时监视...
查看>>
DirectShow实现抓图(Delphi)
查看>>
PS3 可播放的多媒体类型
查看>>