【Codeforces 1120C】Compress String】的更多相关文章

Codeforces 1120 C 题意:给一个串\(S\),将这个串分成\(t_1..t_m\),如果\(t_i\)在\(t_1..t_{i-1}\)中作为子串出现过,那么这个的代价是\(b\),否则如果\(|t_i|=1\),那么这个的代价是\(a\). 问最少代价. 思路:第一次现场敲对\(Suffix\ AutoMaton\)祭 首先考虑\(dp_i\)表示处理到第\(i\)个位置,最少的代价. 然后向后枚举一个在\(S_{1..i-1}\)中出现过的子串\(S_{i..j}\),转移\…
[题目链接]:http://codeforces.com/contest/797/problem/C [题意] 一开始,给你一个字符串s:两个空字符串t和u; 你有两种合法操作; 1.将s的开头字符加到t后面; 2.将t的最后一个字符加到u的后面去 要求最后使得s和t字符串变成空串; 并且得到的u的字符串的字典序最小; [题解] i层循环顺序枚举s字符串的每一个字符; 然后把这第i个字符s[i]加入到t的后面去->用一个栈来模拟; 然后维护栈顶的元素和s中剩下的字符串里面字典序最小的字母;->…
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=2000),问满足[数列长度是k && 数列中每一个元素arr[i]在1~n之间 && 数列中元素可以重复]的数列有多少个?结果对10^9+7取余 解题思路:dp[i][j]表示长度是j,最后一位是i的种数 if(kk%i==0) dp[kk][j+1]+=dp[i][j] #inc…
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出一个符合要求的序列; [题解] 这里 00和11可以确定出序列中0和1的个数; 但有边缘数据 00如果为0代表什么? ->没有0或者是有1个0 11如果为0代表什么? ->没有1或者是有1个1 对这两种情况需要特判一下(两种情况的特判需要用到01和10的数量) 看代码吧. 然后这两种情况排除之后;…
[题目链接]:http://codeforces.com/contest/779/problem/D [题意] 给你一段操作序列; 按顺序依次删掉字符串1中相应位置的字符; 问你最多能按顺序删掉多少个字符; 使得s2是剩下的字符构成的字符串的子列; [题解] 二分枚举能够按顺序删掉多少个字符m; 然后把1..m相应的字符标记成已经删掉了; 然后O(N)判断s2是不是剩下的字符的子串; 心态炸了. [完整代码] #include <bits/stdc++.h> using namespace s…
[题目链接]:http://codeforces.com/contest/801/problem/B [题意] 定义一个对两个字符串x,y的f(x,y)函数; 返回的是一个字符串; 这个返回的字符串的每一位i是x和y在相应位置上的字符的较小值; 告诉你x和f(x,y); 求y; [题解] 如果f(x,y)[i]==x[i]则y[i]='z'; 否则 如果f(x,y)[i]>x[i]则y[i]=x[i] 否则 无解 [Number Of WA] 0 [完整代码] #include <bits/s…
[题目链接]:http://codeforces.com/contest/801/problem/A [题意] 一个字符串只由VK组成; 让你修改一个字符; 使得剩下的字符串里面子串VK的个数最大; [题解] 枚举修改哪一个字符; 然后获取剩余的字符里面VK的数的个数; 取MAX就好; [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #defin…
[题目链接]:http://codeforces.com/contest/510/problem/C [题意] 给你n个字符串; 问你要怎么修改字典序; (即原本是a,b,c..z现在你可以修改每个字母在字典序中的位置了); 才能使得这n个字符串是字典序升序的; [题解] 对于第i个字符串; 让他和第i+1..n个字符串比较->j; 找到第一个不同的位置pos; 然后 必然是要 s[i][pos]< s[j][pos]的: 拓扑排序! 即s[i][pos]建一条边指向s[j][pos] 然后做…
[题目链接]:http://codeforces.com/contest/514/problem/A [题意] 允许你把每个数字翻转 ->x变成9-x 然后问你能够变成的最小的数字是什么; 不能出现前导0,且最后必须是正数; [题解] 第一个数字是9的话不能变; 其他数字; 大于等于5就翻转 这样就不会出现前导0了,也就不会出现为0的情况了: (这题不允许翻转之后第一位数字为0,然后把前导0去掉) [Number Of WA] 3 [完整代码] #include <bits/stdc++.h&…
[题目链接]:http://codeforces.com/contest/514/problem/C [题意] 给你n个字符串; 然后给你m个询问;->m个字符串 对于每一个询问字符串 你需要在n个字符串里面找到和它的长度相同,且只有一个位置的字符不同的字符串; 或者告知这是不存在的; [题解] 写个字典树; 在每一位多了两种选择; (即更改这个字符) 然后前面已经确定匹配的不要重新匹配;->不然会超时 有改和不改两种可能. 注意最后必须要改一个字符. 字典树以后还是用0作为根节点吧.不然to…