Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection
2017-06-10 10:50
429 查看
这题题目有点歧义,garland 意思是花圈,于是,把题意理解成了在环上找最长同一字母序列。而实际上,题目意思,仍是一个串。
这题显然可以预处理答案,实际上,对于每种询问(m,c),可以简单贪心一下,最佳策略肯定是去连接某些不连续的段(只包含字符c),而连接的最低要求是起始和结尾都是一个c字符。于是我们可以假设,最佳答案都是以一个字符c开头(这里说法并不对,可以以非c字符开始,将其染成c字符,但为了表述方便,先这样描述),那么对于以某个字符开头,经过最多m次染色可以得到的最长c字符序列可以求出。向右贪心,尽可能延伸c字符串的长度。求出这个结果并不是答案,因为实际上,字符串还可以向左扩展,但是我们只关心最长长度,所以只有当右边全部变成c字符后,我们可以用多余的染色机会去染左边的位置。对答案来说,直接加上剩余的染色次数,与n取小即可。
上述操作,两个循环就可以完成,因此复杂度位O(N^2)
这题显然可以预处理答案,实际上,对于每种询问(m,c),可以简单贪心一下,最佳策略肯定是去连接某些不连续的段(只包含字符c),而连接的最低要求是起始和结尾都是一个c字符。于是我们可以假设,最佳答案都是以一个字符c开头(这里说法并不对,可以以非c字符开始,将其染成c字符,但为了表述方便,先这样描述),那么对于以某个字符开头,经过最多m次染色可以得到的最长c字符序列可以求出。向右贪心,尽可能延伸c字符串的长度。求出这个结果并不是答案,因为实际上,字符串还可以向左扩展,但是我们只关心最长长度,所以只有当右边全部变成c字符后,我们可以用多余的染色机会去染左边的位置。对答案来说,直接加上剩余的染色次数,与n取小即可。
上述操作,两个循环就可以完成,因此复杂度位O(N^2)
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<map> #include<string> #include<queue> #include<vector> #include<list> #include<bitset> //#pragma comment(linker,"/STACK:1024000000,1024000000") using namespace std; typedef long long ll; #define INF 0x3f3f3f3f int n,m; char str[1502]; int dp[50][1505]; int main() { while(~scanf("%d",&n)) { getchar(); memset(dp,0,sizeof dp); gets(str); for(int i=0;i<26;i++) for(int j=0;j<=n;j++) dp[i][j]=j; for(int i=0;i<n;i++) { int p=str[i]-'a'; dp[p][0]=1; int tmp=1,pp=i+1; for(int j=0;j<=n;) { if(pp>=n||str[i]!=str[pp]) j++; tmp++; tmp=min(tmp,n); dp[p][j]=max(dp[p][j],tmp); pp++; } } scanf("%d",&m); int cnt; char arg[5]; for(int i=1;i<=m;i++) { scanf("%d %s",&cnt,arg); char ch=arg[0]; printf("%d\n",dp[ch-'a'][cnt]); } } return 0; }
相关文章推荐
- Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection
- CF-Codeforces Round #418 (Div. 2)-C-An impassioned circulation of affection
- Codeforces Round #418 (Div. 2)C.An impassioned circulation of affection(暴力枚举)
- coderforces--418 div2 C. An impassioned circulation of affection
- Codeforces Round #418 (Div. 2) 814 C. An impassioned circulation of affection
- Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection
- Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection(尺取)
- (dp)Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection
- Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection(双指针)
- Codeforces Round #418 (Div. 2) -- C. An impassioned circulation of affection(DP预处理)
- An impassioned circulation of affection CodeForces - 814C
- Codeforces-An impassioned circulation of affection (尺取法)
- Codeforces-An impassioned circulation of affection (动态规划/尺取法)
- codeforces 814 C An impassioned circulation of affection
- 【尺取或dp】codeforces C. An impassioned circulation of affection
- 尺取法--An impassioned circulation of affection
- An impassioned circulation of affection
- codeforces C. An impassioned circulation of affection
- Codeforces 814 C. An impassioned circulation of affection (dp)
- Codeforces 814C-An impassioned circulation of affection