HDU6299.Balanced Sequence

这个题就是将括号处理一下,先把串里能匹配上的先计数去掉,然后统计左半边括号的前缀和以及右半边括号的前缀和,然后结构体排序,然后遍历一遍,贪心策略走一遍就可以了。

但是我写的时候排序写挫了,左(括号)多右(括号)少的和左少右多的,肯定左多的在前面,左少右多和左多右少的,肯定左多的在前面,左少右多和左少右多,谁的左边的多谁在前面,以及其他情况都按右少的前排,按这四种情况考虑就可以完美贪心了。只是可惜自己智障,其他就没什么了。

代码:

 //1002-6299-贪心,前缀和,排序,使得匹配数量最多,排序写挫了,是真的菜
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cassert>
#include<set>
#include<queue>
#include<vector>
#include<cstdlib>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
const int inf=0x3f3f3f3f; struct node{
int l,r; bool operator< (const node &a) const{
if(l>r&&a.l<=a.r) return true;//左多右少 左少右多
if(l<=r&&a.l>a.r) return false;//左少右多 左多右少
if(l<=r&&a.l<=a.r) return l>a.l;//左少右多 左少右多
return r<a.r;//其他都按右边排
} }a[maxn]; char s[maxn];
int main()
{
int t;scanf("%d",&t);
while(t--){
int n;scanf("%d",&n);
for(int i=;i<=n;i++)
a[i].l=a[i].r=;
int ans=;
for(int i=;i<=n;i++){
scanf("%s",s);
int len=strlen(s);
for(int j=;j<len;j++){
if(s[j]=='(') a[i].l++;
else{
if(a[i].l>) a[i].l--,ans++;
else a[i].r++;
}
}
}
sort(a+,a++n);
int lsum=;
for(int i=;i<=n;i++){
if(a[i].r<=lsum) ans+=a[i].r,lsum-=a[i].r;
else ans+=lsum,lsum=;
lsum+=a[i].l;
}
printf("%d\n",ans*);
}
return ;
}

HDU 6299.Balanced Sequence-贪心、前缀和排序 (2018 Multi-University Training Contest 1 1002)的更多相关文章

  1. HDU 6299 Balanced Sequence(贪心)

    题目:给出N个只有左右括号字符串 ,这N个字符串的排列顺序是任意的 , 问按最优的排序后 , 得到最多匹配的括号个数 分析: 我们很容易的想到 字符串)()()(( , 这样的字符串可以精简为)(( ...

  2. hdu 6299 Balanced Sequence (贪心)

    Balanced Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. hdu 6299 Balanced Sequence (括号序列,贪心)

    大意: 记$f(t)$表示字符串$t$的最长括号匹配子序列, 给定n个括号序列, 求它们重排后的最大f(t). 首先可以注意到一个括号序列中已经匹配的可以直接消去, 一定不会影响最优解. 那么这样最终 ...

  4. hdu 6299 Balanced Sequence(贪心)题解

    题意:题意一开始不是很明白...就是他给你n个串,让你重新排列组合这n个串(每个串内部顺序不变),使得匹配的括号长度最大.注意,题目要求not necessary continuous,括号匹配不需要 ...

  5. hdu 6299 Balanced Sequence( 2018 Multi-University Training Contest 1 )

    #include <stdio.h> #include <iostream> #include <cstdlib> #include <cmath> # ...

  6. hdu6299 Balanced Sequence 贪心

    题目传送门 题目大意:给出n个字符串,定义了平衡字符串,问这些字符串组合之后,最长的平衡字符子序列的长度. 思路: 首先肯定要把所有字符串先处理成全是不合法的,记录右括号的数量为a,左括号的数量为b, ...

  7. hdu 6047 Maximum Sequence 贪心

    Description Steph is extremely obsessed with “sequence problems” that are usually seen on magazines: ...

  8. HDU 6047 Maximum Sequence(贪心+线段树)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...

  9. HDU 6047 Maximum Sequence (贪心+单调队列)

    题意:给定一个序列,让你构造出一个序列,满足条件,且最大.条件是 选取一个ai <= max{a[b[j], j]-j} 析:贪心,贪心策略就是先尽量产生大的,所以就是对于B序列尽量从头开始,由 ...

随机推荐

  1. 查询数据库里当前用户下的所有表的总共数据sql

    select t.table_name,t.num_rows from user_tables t select sum(num_rows) from user_tables t

  2. Eclipse Java 构建路径 ---Eclipse教程第13课

    Eclipse Java 构建路径 设置 Java 构建路径 Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通 ...

  3. 程序第一次启动推送跳转,handleOpenURL没法跳转的原因

    iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有 ...

  4. 剑指Offer - 九度1515 - 打印1到最大的N位数

    剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...

  5. shell脚本批量下载资源并保留路径

    示例资源列表 如url.txt: http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png http://su.bdimg.co ...

  6. Percona-Tookit工具包之pt-duplicate-key-checker

      Preface       I suppose that we have a requirement of checking out how many duplicated indexes on ...

  7. js 请求异常重连或断线后联网重连机制(ajax)

    转到到 https://blog.csdn.net/mengtoumingren/article/details/80296788

  8. (笔记) RealTimeRender[实时渲染] C2

    @author: 白袍小道 @来源:RealTime Render @建议书籍:龙书.RealTimeR第四版.GPUGem和PRO (来源:暗影不解释) 引点 这一章关注的管线中的管道功能,而非实现 ...

  9. ES原理(转载)

    该博客属于转载,是很经典的一篇关于ES的介绍: Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分 ...

  10. 软工实践 - 第十七次作业 Alpha 冲刺 (8/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/articles/10023469.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长 ...