
字符串处理
算法
风萧萧兮易水寒丶
985软件工程本科在读
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Phoenix and Distribution(字符串、排序、思维)
题目大意: 给你一个长为n的字符串,从中选择字符组成k个不为空的字符串,使得max(s1,s2,…,sk)最小,输出max(s1,s2,…,sk) 解题思路: 这是一道思维题,首先将原字符串进行排序,将前k个字符作为字符串的第一个字符 如果这k个字符完全相同,判断字符k+1到字符n是否相同,如果相同则均分给k个字符,取其中最大的输出,如果不同,则要是最大字典序最小,直接将剩下的字符串接到字符k...原创 2020-05-07 15:03:19 · 275 阅读 · 0 评论 -
Codeforces Vova and Trophies(前缀、后缀、字符串)
解题思路: 记录a[i]为从i开始往前最大的连续G的数量,记录b[i]为从i开始往后最大的连续G的数量,枚举每个交换位置i,arr[i]为S,取最大的a[i-1]+b[i+1]+1即为交换后最大可能连续G的长度,注意长度不能超过总的G的数量,如果超过要将答案减1 #include <bits/stdc++.h> using namespace std; #define ll long...原创 2020-04-25 16:17:56 · 204 阅读 · 0 评论 -
Codeforces Hard problem(dp、字符串)
题目大意: 给定n个子字符串,对其中若干个字符串进行反转,每次反转产生代价Ci,最后使得字符串按照字典序排列,求最小代价和,不需要反转时输出-1 解题思路: 首先使字符串的两个状态,正序和反序,相当于从每两个字符串中选出一个,如果选正序代价为0,如果选反序代价为Ci,求出最终最小代价,定义方程dp[i][j]为当选完第i个状态为j的字符串时的最小代价,则有状态转移方程 dp[i][j]=min(...原创 2020-04-24 10:35:09 · 271 阅读 · 0 评论 -
月月查华华手机(字符串操作)
解题思路: 维护一个数值Next[i][j],表示第i个位置之后第一次出现j的位置,首先从前往后遍历字符串,初始化Next,Next[i-1][arr[i]-‘a’]=i,然后从后往前处理Next数组,相当于每次向前传递位置i后第一次出现的字母的位置信息,遍历到位置0结束,注意只有一个字符的特殊情况。 代码: #include <bits/stdc++.h> using namesp...原创 2020-04-04 12:11:36 · 303 阅读 · 0 评论 -
manacher模板
#include<bits/stdc++.h> #define ll long long using namespace std; char temp[1500],s[4000]; int cnt[4000]; int manacher() { int l=strlen(temp+1); int t=0; s[t++]='@'; s[t++]='#'; ...原创 2020-03-31 22:06:29 · 140 阅读 · 0 评论 -
悠悠水波(String用法)
#include<bits/stdc++.h> #define ll long long using namespace std; string a,b; int main() { cin>>a; int len=a.size(); for(int i=1;i<=len/3;++i) { string s1=a.sub...原创 2020-03-29 14:15:31 · 143 阅读 · 0 评论