【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

我们贪心地把每一个括号序列能匹配都按照栈的规则都匹配出来。
(直接递增匹配对数*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.right_brackets;//都是左括号比较少。那么就右括号少一点的放左边。else //b.left<=b.right//))))))))))((return true;//看上去右括号那么多,就放后面一点吧。。多一点匹配数。}else{//)))))))))))(((//left_brackets<=right_bracketsif (b.left_brackets<=b.right_brackets){ //都是右括号比较多。就让他少祸害一点。让左括号多的放左边.//))))))))))))))((return left_brackets>b.left_brackets;}else{//)))))((((((((((((((return false; //如果这个左括号那么多的话,就放左边去吧。}}}

【代码】

#include <bits/stdc++.h>
#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|1
using 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.right_brackets;else //b.left<=b.right//))))))))))((return true;}else{//)))))))))))(((//left_brackets<=right_bracketsif (b.left_brackets<=b.right_brackets){//))))))))))))))((return left_brackets>b.left_brackets;}else{return false;}}}
}a[N+10];int n;
char s[N+10];
int sta[N+10];int main(){#ifdef LOCAL_DEFINEfreopen("rush_in.txt", "r", stdin);#endifint 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;}elsesta[++top] = 1;}else{sta[++top] = 0;}rep1(j,1,top)if (sta[j]==1)a[i].right_brackets++;elsea[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

【HDU 6299】Balanced Sequence相关推荐

  1. 【HDU 1711】Number Sequence(裸KMP算法)

    题目链接 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1711 题意 裸KMP算法 时间复杂度 O(m+n) 代码如下(G++) #include & ...

  2. 【HDU - 5014】Number Sequence(贪心构造)

    题干: There is a special number sequence which has n+1 integers. For each number in sequence, we have ...

  3. 【HDU - 5882】Balanced Game (找规律,思维)

    题干: Rock-paper-scissors is a zero-sum hand game usually played between two people, in which each pla ...

  4. 大数加法【HDU 1002】

    大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...

  5. 【 HDU - 5093】Battle ships(匈牙利算法,二分图匹配)

    题干: Dear contestant, now you are an excellent navy commander, who is responsible of a tough mission ...

  6. 【HDU - 1455】Sticks (dfs + 剪枝)

    题干: George took sticks of the same length and cut them randomly until all parts became at most 50 un ...

  7. 【HDU - 4006】The kth great number (优先队列,求第k大的数)

    题干: Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to wri ...

  8. 【HDU - 4217 】Data Structure? (线段树求第k小数)

    题干: Data structure is one of the basic skills for Computer Science students, which is a particular w ...

  9. 【HDU - 1754】I Hate It (线段树模板 单点覆盖更新+区间最大值查询)

    题干: 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.  这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当 ...

  10. 【HDU 5765】Bonds(进制运算妙用)

    [HDU 5765]Bonds(进制运算妙用) Bonds Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

最新文章

  1. 多迪将企业的Python工程师定位成哪几类?
  2. 17 张程序员专属壁纸,有你喜欢的吗?
  3. python--从入门到实践--chapter 15 16 17 生成数据/下载数据/web API
  4. oracle怎么以时间排序,oracle指定数据排序在前面怎么处理
  5. ASP.NET 文件下载 .
  6. 速成pytorch学习——8天损失函数
  7. 使用windows的事件查看器(eventvwr),查看、电脑执行过的你不知道的操作・开机・关机时间
  8. java+整合handwrite_Java
  9. java 枚举实例化_Java枚举
  10. Nginx实现白名单灰度发布,杜绝后台不可操控
  11. 蜀门 - 青城加点完美攻略
  12. Python字符串总结大全
  13. StaMPS结合TRIAN 做GACOS大气校正
  14. java导出excel文件名乱码_Poi生成excel文件名乱码问题的解决方案
  15. 想借微商发家?打造千万级分销体系的方法论在这里!
  16. LeetCode 347. 前 K 个高频元素(C++)*
  17. 函数最值题目及答案_高一函数题目及答案解析
  18. 重庆科创学院03级计算机文秘,重庆科创职业学院——国际商务文秘实务学习课程标准.doc...
  19. 【EdgeX】基于sdk-c随机数设备服务发布数据到MQTT消息总线上,并在MQTTX上订阅
  20. 叮咚~您有一份GitHub2020年度报告待查收

热门文章

  1. 拓端tecdat|R语言highfrequency高频金融数据导入
  2. oracle数据文件管理,数据文件管理—oracle管理指南
  3. Linux-eval命令
  4. android volley框架详解,android通信框架volley详解(一)
  5. 配置的代理服务器未响应 电脑连不上网_手机、电脑为什么连不上网(断网)?...
  6. resent代码详解
  7. bytes的json解析
  8. 2021-06-24相对定位
  9. linux shell grep -v grep|awk ‘{print $1}‘ 是什么意思
  10. 计算机硬盘存绝密,教您创建自己的绝密磁盘