//yy:因为这题多组数据,DP预处理存储状态比每次尺取快多了,但是我更喜欢这个尺取的思想. 题目链接:codeforces 814 C. An impassioned circulation of affection 题意:给出字符串长度n (1 ≤ n ≤ 1 500),字符串s由小写字母组成,q个询问q (1 ≤ q ≤ 200 000),每个询问为:mi (1 ≤ mi ≤ n)   ci ,表示可以把任意mi个字母改成ci,求每次改变后只由ci组成的最长连续字串的长度. 解法一:尺取法…
                                                        C. An impassioned circulation of affection                                                                time limit per test  2 seconds                                                          …
An impassioned circulation of affection time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Nadeko's birthday is approaching! As she decorated the room for the party, a long garland of Dianthu…
C. An impassioned circulation of affection time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Nadeko's birthday is approaching! As she decorated the room for the party, a long garland of Dian…
http://codeforces.com/contest/814/problem/C [题意] 给定一个长度为n的字符串s,一共有q个查询,每个查询给出一个数字m和一个字符ch,你的操作是可以改变字符串中的某些字母,最多改变m个,问操作后只包含字符ch的连续子序列最长是多少? [思路] 方法一: 有这么一类问题,需要在给的一组数据中找到不大于某一个上限的“最优连续子序列” 于是就有了这样一种方法,找这个子序列的过程很像毛毛虫爬行方式比较流行的叫法是“尺取法”. 有关尺取的练习: http://…
题目链接:http://codeforces.com/contest/814/problem/C 题目: 题意:给你一个长度为n的字符串,m次查询,每次查询:最多进行k步修改,求字符c(要输入的字符)最长连续的长度. 思路:尺取法,预处理出每个字符连续长度为k需要的代价,然后O1查询. 代码实现如下: #include <set> #include <map> #include <queue> #include <stack> #include <cm…
题目链接:http://codeforces.com/contest/814/problem/C 题意:给出一串字符串然后q个询问,问替换掉将m个字符替换为字符c,能得到的最长的连续的字符c是多长 题解:预处理dp[i][j]表示第i种字幕添加j个最长的连续为多长.然后与处理一下sum[j]表示前j个里有几个不是第i种字母的. 然后for一遍二分一下.更新dp. #include <iostream> #include <cstring> #include <vector&g…
http://codeforces.com/contest/814/problem/C 12ooyomioomioo21 o2 o 这题我是用dp解的,不过好像很慢,比赛的时候算了下不会mle,就没滚动数组了. dp[i][k][ch]表示以第i位结尾,允许变化k次,所求的字符是ch时的最大连续数量. 如果k > 0,那么dp[i][k][ch] > 0的,因为肯定可以把第i位变了. 那么对于第i位来说,如果str[i]和ch相同,那么应该是dp[i][k][ch] = dp[i - 1][k…
思路: 对于题目中的一个查询(m, c),枚举子区间[l, r](0 <= l <= r < n),若该区间满足其中的非c字符个数x不超过m,则可以将其合法转换为一个长度为r-l+1的全c子序列,可以使用动态规划以O(n2)的复杂度计算,然而O(n2q)的复杂度还是太高了.于是先离线把26n中情况都计算出来,再打表即可.复杂度O(26n2+q). 实现: #include <iostream> #include <cstdio> using namespace s…
原题链接:http://codeforces.com/contest/814/problem/C 题意:有长度为n的一个字符串,q个询问,每个询问由数字m和字符c组成,问最多在字符串中替换m个字符,使连续的字符c的长度最大,输出这个最大值. 思路:首先可以想到,替换两段分开的子串变成连续的字符c肯定不能得到最大值,所以替换的部分必须是连续的一个子串.那么我们可以对于a-z每个字符枚举字符区间[l,r],区间内可被替换的字符数m对应能得到r-l+1的连续字符长度,一边枚举一边更新最大值.这里我们要…