字符串:字符串处理
文章平均质量分 91
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #367 (Div. 2) C. Hard problem 朴素dp、线性dp
状态定义: LL dp[maxn][2]; dp[i][0] 表示前 i 个字符串 按字典序排列, 且第 i 个字符串不翻转 的 最小花费 dp[i][1] 表示前 i 个字符串 按字典序排列, 且第 i 个字符串翻转 的 最小花费 初始化: dp[i][0] = dp[i][1] = INF 边界: i == 0, dp[i][0] = 0, dp[i][1] = c[i]; 状态转移方程: if(dp[i - 1][0] != INF) if(s[i] >= s[i - 1]) dp[i][0原创 2016-09-09 02:00:51 · 842 阅读 · 0 评论 -
AIM Tech Round 3 (Div. 2) C. Letters Cyclic Shift 贪心、字典序
贪心、字典序 必须改一个子串使得得到的新串字典序最小 所以从左往右改第一个不是a的, 然后连着的都要改直到碰到一个a为止 但是exactly one non-empty substring 所以全是a的时候也要改, 把最后一个a改成 z原创 2016-08-26 23:26:10 · 932 阅读 · 0 评论 -
Codeforces Round #389 (Div. 2) B. Santa Claus 贪心+字符串处理、易错
题意:给定一个原串和一个新串,它们之中存在一些序偶,(x, y) 在原串的i位置为x,在新串的i位置是y,且x != y 则存在序偶(x, y),原串的所有x在新串中必须只用y表示。 一个字母最多出现在一个序偶中,问这样的序偶有多少对。 贪心+字符串处理、易错 理解懂题意是关键,然后扫一遍就好。 一旦存在序偶(x, y) 则x、y之后不能出现在别的序偶中了,原串中的所有x,在新串中的对应位置都必须是y,新串中所有y在原串必须是x,否则ans = -1; 扫一遍得到序偶之后,再重新扫一遍,按照一旦存在序偶(x原创 2017-01-12 00:46:04 · 734 阅读 · 0 评论 -
UVALive - 4882 Parenthesis 表达式处理、字符串处理、栈
题意:给一个有括号小写字母加号组成的字符串,去掉多余的括号后输出。 表表达式处理、字符串处理、栈 用栈,O(n)预处理出每个左括号i 对应的右括号mp[i]的位置, 然后扫一遍mp,对于每个括号判断左括号的左边是否是 字母或者右括号,右括号的右边是否是 字母或者左括号, 如果是就不能去掉,否则去掉的括号把flag[i]标记为true即可, 然后还有2个问题,去掉的括号在接下来的判断中该位置应当忽略, 1、比如 (((x+y)))x => (x+y)x 故上面所说的左边或者右边是指忽略掉以去除括号的情况下的原创 2017-01-16 19:15:58 · 1203 阅读 · 0 评论 -
Summer Training Team Selection (1) Problem D Hidden Password STL,字符串匹配,简单题
先用map记录下来password中每个字母出现的次数; 然后去历遍message,如果当前访问的不是正在查找的,并且在map中的记录里不是0,那么FAIL 如果是则,map里想要的字母--,然后查找password中的下一个字母 复杂度 O(n)原创 2016-04-30 22:31:07 · 4117 阅读 · 0 评论 -
Topcoder SRM 687 (Div 2) 500.Quacking __ string matches
Ducks have started mysteriously appearing in your room. All ducks make the same sound: "quack". Each duck makes the sound one or more times, one after another. For example, valid sounds for a single duck are "quack", "quackquackquackquack", "quackquack", e原创 2016-04-15 01:34:59 · 3183 阅读 · 0 评论 -
Codeforces Round #401 (Div. 2) D. Cloud of Hashtags 贪心、字符串处理
题意:给出n个字符串,要求删除尽可能短的后缀,是这n个字符串的字典序是非递减的。 贪心、字符串处理 可知,可以且需要从倒数第二个字符串开始考虑删除后缀,使s[i] <= s[i+1],因为只能从后往前处理, 然后删除后缀的时候满足删除尽可能短的后缀即可。 复杂度 O(n*length)原创 2017-02-25 00:01:30 · 652 阅读 · 0 评论 -
Codeforces Round #404 (Div. 2) D. Anton and School - 2 前缀的后缀、 范德蒙恒等式、容斥
题意:给出一个只有"("和“)"的字符串,为有多少个子序列,它的长度为len,则左边len/2个字符为”("右边len/2个字符为")",问这样的子序列有多少个。 前缀的后缀、 范德蒙恒等式、容斥 子串为 前缀的后缀,这里是子序列,所以s[i]为必取,作为序列的最后一个元素,然后前面的"("为选取, 所以可以预处理出suml和sumr,分表表示i的左边有多少个"(", i的右边有多少个")". 然后对于每个“(",必选这一个"(",然后i之前的(进行排列组合,选j个"(",就在sumr[i+1]里选j个")原创 2017-03-16 01:44:40 · 1554 阅读 · 0 评论 -
Codeforces Round #402 (Div. 2) D. String Game 二分+优先队列+字符串匹配
题意:给出文本串和目标串,然后给出一个文本串删除字符的序列,从a1~an,要求删除s[a1 ~ ak]时剩下的字符串依然可以匹配,求尽可能大的k。 二分+优先队列+字符串匹配 从左往右是删除字符的顺序,倒着做,从右往做是添加字符的顺序,故check mid~n这个序列能否满足目标串的匹配,要求mid尽可能小, 故二分这个剩余序列长度即可,每次check是用优先队列priority_queue<int, vector<int>, greater<int>> pq;,然后依次进行匹配。 复杂度 O(nlognl原创 2017-02-26 21:41:34 · 1053 阅读 · 0 评论