18年暑假多校赛第一场 1002

题目地址

http://acm.hdu.edu.cn/showproblem.php?pid=6299

分四种情况排序,消去一对括号,把’)’的 ‘(’多的放在前面。 

重载运算符里面的四种情况后面两种是前面两种的逆向。

一对括号是2,答案乘二。(说实话我没看懂题意为什么chen乘2)

include <iostream>

#include <algorithm> #include <string> #include <cstring> using namespace std;

const int maxn=100005;

struct Node {     int l,r,sum;     bool operator < (const struct Node &b) const     {         if(l>=r&&b.l<=b.r)         return false;         else if(l<=r&&b.l>=b.r)         return true;         else if(l>=r&&b.l>=b.r)         return r>=b.r;         else if(l<=r&&b.l<=b.r)         return l<=b.l;     } }node[maxn]; char s[maxn]; int main() {     int t,n;     scanf("%d",&t);     while(t--)     {         scanf("%d",&n);         getchar();       for(int i=0;i<n;i++)       {           scanf("%s",s);           int len = strlen(s);           node[i].l=node[i].r=node[i].sum=0;            for(int j=0;j<len;j++)             {               if(s[j]==')')//    l:')'               {                   if(node[i].r>0)                   {                       node[i].r--;                        node[i].sum++;                   }                   else                   {                       node[i].l++;                   }             }             else{                    node[i].r++;               }                          }             }         sort(node,node+n);         int ans=0; int now=0;//now记录‘(’          for(int i=0;i<n;i++)         {            ans+=node[i].sum;            if(node[i].l>=now)            {                ans+=now;                now=node[i].r;             }             else             {                 ans+=node[i].l;                 now-=node[i].l;                 now+=node[i].r;              }          }         printf("%d\n",ans*2);     }   return 0; } 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java开发者杂谈

Ruby(1):入门

安装:   一般来说linux会自动装ruby,可以通过:   ruby -v 来查看ruby版本   直接使用ruby命令的话,是用来执行ruby文件的。如果...

3578
来自专栏前端那些事

复杂值vs原始值&&内存空间

写在前面      最近在读《JavaScript启示录》,这本书不是JavaScript的详尽的参考指南,但是把对象作为了解JavaScript的透镜,受益匪...

1867
来自专栏技术博客

C#项目代码规范

   小菜就是小菜,几个人搞出来的项目,让公司大牛稍微看了下,最后送出了惨不忍睹四个字。命名各种各样,五花八门,大写英文、小写英文、大写拼音、小写拼音、英文和拼...

1234
来自专栏章鱼的慢慢技术路

《算法图解》第二章笔记与课后练习

17510
来自专栏Python小屋

Python使用marshal模块操作二进制文件

Python标准库marshal可以进行对象的序列化和反序列化。 >>> import marshal # 待序列化的对象 >>> x1 = 30 >>> x2...

2965
来自专栏程序员互动联盟

【编程基础第九讲】main函数也有参数?

存在问题: main函数我们使用的多关注的少,特别是参数,如何去用? 解决方案: 有C语言初学者朋友不知道怎么应用main函数的参数,其实也不难,只要对C语言...

34813
来自专栏Python攻城狮

Python3.x 常用的新特性字符串编码格式:

692
来自专栏Java社区

Python 自学步骤(文中有福利)

1564
来自专栏程序员的知识天地

Python基础为重,成就月薪过万

傻瓜式,傻瓜式的你可以直接点开进行下载,但是智能下载这版本,有的人愿意下载别的版本所以就要用到另外的方法

742
来自专栏CRPER折腾记

ES6折腾记- 模板字符串

总体来说,模板字符串的出现了,让我们的字符串拼接写的更加优美了;相当简易实用;但是这货并不是万能的,有部分unicode编码字符会造成编译报错

963

扫码关注云+社区