[删括号][判断可行性的dp]】的更多相关文章

链接:https://ac.nowcoder.com/acm/problem/21303来源:牛客网题目描述 给你一个合法的括号序列s1,每次你可以删除一个"()" 你可以删除0个或者多个"()" 求能否删成另一个括号序列s2 输入描述: 第一行输入一个字符串s (2 ≤ |s| ≤ 100)第二行输入一个字符串t (2 ≤ |t| ≤ 100 ) 输出描述: 如果可以输出"Possible"否则输出"Impossible"…
题目链接:https://ac.nowcoder.com/acm/problem/21303 思路:删括号的时候一定要时刻保证左括号数量比右括号多,我们可以定义dp[i][j][k]表示考虑AA前i个匹配了B前j个A被删除部分左括号数-右括号数=k是否可行, 分类讨论转移即可,最后答案就是dp[n][m][0]. #include <cstdio> #include <map> #include <iostream> #include<cstring> #i…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3622 思路:二分是容易想到的,由于题目中有明显的矛盾关系,因此可以用2-sat来验证其可行性.关键是如何建图:对于每两对炸弹的(u,u')和(v,v'),如果u,vi的距离小于2*mid,则连边u->v',v->u‘.然后强连通判断可行性. http://paste.ubuntu.com/5972769/…
括号序列(区间dp) 输入一个长度不超过100的,由"(",")","[",")"组成的序列,请添加尽量少的括号,得到一个规则的括号序列.如有多解,输出任意一个序列即可. 括号序列是这样定义而成的: 空序列是括号序列 如果S是括号序列,那么(S)和[S]也是正规括号序列 如果A和B都是正规括号序列,那么AB也是正规括号序列. 所以,只要一个括号序列不是空序列,我们一定可以把它从两端剥开,或者把它划分成两个小括号序列.设\(f[…
题意:       有n头猪,m个猪圈,每个猪圈都有一定的容量(就是最多能装多少只猪),然后每只猪对每个猪圈的喜好度不同(就是所有猪圈在每个猪心中都有一个排名),然后要求所有的猪都进猪圈,但是要求所有的喜好度排名最低的和最高的差值的绝对值最小,输出这个最小的差值,就是是每个猪进猪圈后都会产生一个范围,就是最喜欢和最不喜欢(用排名的名次表示),然后把所有的范围放在一起,最小的端点个最大的端点的差的绝对值最小是多少? 思路:        做了将近两个小时才搞定,一直是超时,先说下我的做法,就是枚举…
题意:给一段左右小.中括号串,求出这一串中最多有多少匹配的括号. 解法:此问题具有最优子结构,dp[i][j]表示i~j中最多匹配的括号,显然如果i,j是匹配的,那么dp[i][j] = dp[i+1][j-1]+2; 否则我们可以分区间取最值.dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j]); k在i,j之间. 代码: #include <iostream> #include <cstring> #include <algorithm…
题意:给你一些括号,问匹配规则成立的括号的个数. 思路:这题lrj的黑书上有,不过他求的是添加最少的括号数,是的这些括号的匹配全部成立. 我想了下,其实这两个问题是一样的,我们可以先求出括号要匹配的最少数量,那么设原来括号的数量为l , 添加了l' . 那么其实原来括号匹配成功的括号数就是((l + l') / 2 - l') * 2. #define N 105 char a[N] ; int dp[N][N] ; int f[N][N] ; int check(int i ,int j) {…
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 1] 内的字符串. 输出格式: 在一行中输出至多删掉其中 3 个字符后不同字符串的个数. 输入样例: ababcc 输出样例: 25 提示: 删掉 0 个字符得到 "ababcc". 删掉 1 个字符得到 "babcc", "aabcc", "abbcc&quo…
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5193 解决:2248 题目描述: 在某个字符串(长度不超过100)中有左括号.右括号和大小写字母:规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配.写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号.不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注. 输入: 输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大…
题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/generate-parentheses 著作权归领扣网络所有.…