【HDOJ6299】Balanced Sequence(贪心)】的更多相关文章

题目传送门 题目大意:给出n个字符串,定义了平衡字符串,问这些字符串组合之后,最长的平衡字符子序列的长度. 思路: 首先肯定要把所有字符串先处理成全是不合法的,记录右括号的数量为a,左括号的数量为b,考虑两个字符串,这两个如果min(a1,b2)小于min(a2,b1)时,第一个字符串是不是应该排在前面呢?如果两个相同的话,当然应该吧右括号比较多的放在前面,左括号比较多的放在后面. #include<iostream> #include<cstdio> #include<cm…
题目:给出N个只有左右括号字符串 ,这N个字符串的排列顺序是任意的 , 问按最优的排序后 , 得到最多匹配的括号个数 分析: 我们很容易的想到 字符串)()()(( , 这样的字符串可以精简为)(( 因为无论如何的排序 ,对于字符串可以匹配的括号是不会变的 : 那么问题就可以简化为对与 **)(**    )     (   这几种类型的字符串的排序情况 : 我们也很自然而然的想到了贪心 ,那问题来了 ,我们该如何贪心呢?先从小问题出发 , 有A 与 B两串 , 在自然的可以想到 排序的情况肯定…
Balanced Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6207    Accepted Submission(s): 1616 Problem Description Chiaki has n strings s1,s2,…,sn consisting of '(' and ')'. A string of…
Balanced Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6311    Accepted Submission(s): 1648 Problem Description Chiaki has n strings s1,s2,…,sn consisting of '(' and ')'. A string of…
Balanced Sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submission(s): Problem Description Chiaki has n strings s1,s2,…,sn consisting of '(' and ')'. A string of this type is said to be balanced:…
HDU5014Number Sequence(贪心) 题目链接 题目大意: 给出n,然后给出一个数字串,长度为n + 1, 范围在[0, n - 1].然后要求你找出另外一个序列B,满足上述的要求,而且使得t = A0^B0 + Ai + 1 ^ Bi + 1 + ... + An ^ Bn 最大. 解题思路: 对于一个数字进行异或,要求结果最大的话,那么取这个数字的二进制互补数字是最好的情况,而且能够发现每次找到一个数字和相应的互补的数字都会是一段区间.就这样一段一段区间的去寻找每一个点相应的…
Balanced Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1320    Accepted Submission(s): 316 Problem Description Chiaki has n strings s1,s2,…,sn consisting of '(' and ')'. A string of t…
[题解]Cut the Sequence(贪心区间覆盖) POJ - 3017 题意: 给定一大堆线段,问用这些线段覆盖一个连续区间1-x的最小使用线段的数量. 题解 考虑一个这样的贪心: 先按照左端点排序,若左端点一样则谁长谁在前.现在判无解就方便了,记录一下前缀max即可.然后现在要最小化选择. 记录一个最右端点\(R\),一个暴力的办法是暴力循环判断所有线段是否满足条件,这样显然超时,你决定优化一下常数,所以你记录一下从哪个线段开始才\(l_i \ge R\).你以为你是常数优化,其实你复…
题意:给定n个只有左右括号的序列,要求将它们重新排序使得匹配的括号对数最大. n<=1e5 s[i]<=1e5 sum s[i]<=5e6 思路: 先把每个串内部的匹配数量减去,剩下的就是不匹配的左右括号数量 对于左括号数量大于右括号的串,按右括号数量从小到大排序 对于右括号数量大于左括号的串,按左括号数量从大到小排序 #include<cstdio> #include<cstring> #include<string> #include<cma…
大意: 记$f(t)$表示字符串$t$的最长括号匹配子序列, 给定n个括号序列, 求它们重排后的最大f(t). 首先可以注意到一个括号序列中已经匹配的可以直接消去, 一定不会影响最优解. 那么这样最终就为n个类似于))))((的括号序列, 然后贪心排序即可 #include <iostream> #include <algorithm> #include <math.h> #include <cstdio> #include <set> #inc…
Problem Description Chiaki has n strings s1,s2,…,sn consisting of '(' and ')'. A string of this type is said to be balanced: + if it is the empty string+ if A and B are balanced, AB is balanced,+ if A is balanced, (A) is balanced. Chiaki can reorder…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6299 题目: 题意:t组数据,每组数据给你一个n表示给你n个括号串,这n个括号串之间进行组合,求能够匹配的长度. 思路:用一个结构体来记录每个字符串的左括号和右括号的数量,在输入时将同串中能够匹配的直接消掉,最后剩余的字符绝对是所有的右括号在左边,左括号在右边,假设当前字符串为())(()(,我们一次将其标记为1~7,那么1和2可以匹配,5可以和6匹配,最后剩余347,也就是)((.我们紧接着就对n…
题意:对N个由(,)组成的字符串,求拼接后得到的最大的balance序列的长度.balance序列:空串/ A+B(A,B都是b序列)/ (+A+),A为b序列.此三种情况. 分析:在读入N每个字符串时,先将单独一个字符串中的b序列长度提取出来,记录其没有被使用的左弧L和右弧R的数目.因为要使其最后拼接后得到的子序列长度尽可能地大,那么按照贪心的思想,肯定希望左弧多的字符串在前,右弧多的字符串在后,所以要对其排序.但是排序时关键字的比较并不只是简单地比较二者的L与R,而且要先比较自身L与R的大小…
题意: t组测试数据,每组数据有 n 个只由 '(' 和 ')' 构成的括号串. 要求把这 n 个串排序然后组成一个大的括号串,使得能够匹配的括号数最多. 如()()答案能够匹配的括号数是 4,(()) 也是 4. 例如: n = 2 ) )(( 你可以将其排序为))((,数目为0,也可以将其排序为)((),数目为1. 解法: 贪心. 把所有字符串中本身能够匹配的括号全部去掉,然后剩下的字符串只有三种: 1.全是 '(' 2.全是 ')' 3.一串 ')' 加一串 '(' 对于每一种字符串,如果…
题意:题意一开始不是很明白...就是他给你n个串,让你重新排列组合这n个串(每个串内部顺序不变),使得匹配的括号长度最大.注意,题目要求not necessary continuous,括号匹配不需要连续. 思路:我们先把每个串里面能组合的全部抵消,比如)((()抵消完为)((.我们能知道,这样操作完只会有4种情况留下:))))),((((((((,)((((((,))))))))(.然后排序,排序的时候为了后面匹配能最大化利用所有括号,我们需要把左括号尽可能多的放在左边,右括号尽可能多的放在右…
hdu4915 Parenthese sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 82    Accepted Submission(s): 25 Problem Description bobo found an ancient string. The string contains only three c…
题目链接:hdu_5783_Divide the Sequence 题意: 给你一个数列,让你分尽可能多的段,并且保证每一段的前缀和都不小于0 题解: 从后往前xjb贪心就行了 #include<cstdio> ; int a[N]; int main() { int n; while(~scanf("%d",&n)) { ;i<=n;i++)scanf("%d",a+i); ,ans=; ;i--) { sum+=a[i]; )ans++…
Divide the Sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5783 Description Alice has a sequence A, She wants to split A into as much as possible continuous subsequences, satisfying that for each subsequence, every its prefix sum is not smal…
A. Increasing Sequence 题目连接: http://www.codeforces.com/contest/11/problem/A Description A sequence a0, a1, ..., at - 1 is called increasing if ai - 1 < ai for each i: 0 < i < t. You are given a sequence b0, b1, ..., bn - 1 and a positive integer…
Description Steph is extremely obsessed with “sequence problems” that are usually seen on magazines: Given the sequence 11, 23, 30, 35, what is the next number? Steph always finds them too easy for such a genius like himself until one day Klay comes…
[BZOJ1345][Baltic2007]序列问题Sequence Description 对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一操作的代价是max(ai,ai+1).进行n-1次该操作后,可以得到一个长度为1的序列.我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列. Input 第一行为一个整数n( 1 <= n…
Least Cost Bracket Sequence CodeForces - 3D 题目描述 This is yet another problem on regular bracket sequences. A bracket sequence is called regular, if by inserting "+" and "1" into it we get a correct mathematical expression. For example,…
题目大意:求一个序列中不严格单调递增的子序列的最小数目(子序列之间没有交叉). 这题证明贪心法可行的时候,可以发现和求最长递减子序列的长度是同一个方法,只是思考的角度不同,具体证明并不是很清楚,这里就给出贪心法的解题过程. 首先很容易想到的就是对n长度数列进行n次遍历,每一次尽可能长地取出一个递增序列,显然这样最后取出的序列数目是最少的.但是这是一个n^2的算法,如果数据取极端的完全递减情况,很容易就能卡掉时间.Ps:这题的测试数据可能设计的并不是很严谨,这个简单的贪心法只要开一个记录已经取出序…
转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Vasily the Bear and Sequence Vasily the bear has got a sequence of positive integers a1, a2, ..., an. Vasily the Bear wants to write out several numbers on a piece of paper so that the beauty…
(- ̄▽ ̄)-* 找规律 //初始化为B[i]=A[i] //然后由V=|A[1]-B[1]|+|A[2]-B[2|+|A[3]-B[3]| // +|B[1]-B[2]|+|B[2]-B[3]| //可以知道,如果要V尽可能小,那么对于B[2]的取值, //则要求B[2]到A[2] B[1] B[3]的距离尽可能小, //在数轴上可以看出,只要B[2]=中位数(A[2],B[1],B[3])即可 //即贪心规则如下:B[i]=Mid(A[i],B[i-1],B[i+1])(i=1--n-1)…
题目说要n个字符串串内随意组合以后将这些串放在一起,然后求最长的括号匹配的长度,并不要求是连续的 因为不需要是连续的,所以可以先把已经匹配好的括号加入到答案里面去,先把这些删掉,以为并不影响结果,然后最后就只剩下))))((((这些的序列,然后接下来对剩下的考虑 因为剩下的括号最多只有四种情况就是 1.只有(   (((((((( 2.只有)   ))))))) 3.(比)多  (((((()) 4.)比(多   ))))))((( 然后我们要做的就是把他们排序,既然要得到尽可能多的匹配,那就贪…
题意:给定一个序列,让你构造出一个序列,满足条件,且最大.条件是 选取一个ai <= max{a[b[j], j]-j} 析:贪心,贪心策略就是先尽量产生大的,所以就是对于B序列尽量从头开始,由于数据比较大,采用桶排序,然后维护一个单调队列,使得最头上最大. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #i…
地址 n个数,可进行把一个数减小的操作,代价为减小的值.现求使数列任意一个数都存在至少k-1个数和他相同,问操作的最小代价. 可以先考虑最小的数,由于只能减,所以必须得至少k-1个数减为最小数,贪心策略:从小到大从最小数开始的后面至少k-1个数必须减为他自己这一块代价才最小.很好想,如果里面有一个不选,那必须有一个更大的数下降,并且不选的这个数在之后也使后面另一块的数减的更多,所以总是把连续的至少k个数减为开头最小的那个数.那就是数列上划分块的dp,$f[i]$是到$i$时最小代价. $f[i]…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 我们贪心地把每一个括号序列能匹配都按照栈的规则都匹配出来. (直接递增匹配对数*2就可以了 最后栈里面就只剩下类似))))(((((((这样的形式了. 现在就相当于有很多个这种字符串了. 让你把它们拼接在一起. 可以用sort贪心一下. 优先把(多的序列放在前面一点. 具体的比较函数这么写 里注释的括号用于参考 (实在不知道原理,就一种一种猜吧.... sort完之后再模拟一下括号匹配就好 bool operator < (co…
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 90    Accepted Submission(s): 44 Problem Description Steph is extremely o…