51nod1313 完美串
第一行一个整数K,1<=K<=3000.
第二行一个字符串S,1<=len(S)<=3000,且只由'R','G','B'三种字符组成。
一个整数,即不同的四元组(a,b,c,d)的个数。
容斥+dp,
ans=([a,b]存在k个连续的'G',[c,d]任意的方案数)+([c,d]存在k个连续的'G',[a,b]任意的方案数)-([a,b],[c,d]都存在k个连续的'G'的方案数)+([a,b],[c,d]都不存在k个连续的'G',但拼起来之后存在k个连续的'G'的方案数)
#include<cstdio>
#include<cstring>
char s[];
int n,k;
long long ans=;
int ls[],rs[];
short cl[][],cr[][],cs[][];
int l1[][],r1[][];
int max(int a,int b){return a>b?a:b;}
int C(int x){return x*(x+)/;}
int main(){
scanf("%d%s",&k,s+);
n=strlen(s+);
for(int i=;i<=n;++i)if(s[i]!='G')s[i]=;
for(int i=;i<=n;++i)if(s[i])cs[i][i]=cl[i][i]=cr[i][i]=;
for(int d=;d<n;++d)for(int l=,r=+d;r<=n;++l,++r){
if(s[r])cl[l][r]=cl[l][r-]+;
if(s[l])cr[l][r]=cr[l+][r]+;
cs[l][r]=max(max(cs[l][r-],cs[l+][r]),max(cl[l][r],cr[l][r]));
}
for(int i=;i<=n;++i){
for(int j=;j<=i;++j)if(cs[j][i]>=k)++ls[i];
for(int j=i;j<=n;++j)if(cs[i][j]>=k)++rs[i];
}
for(int i=n;i;--i)rs[i]+=rs[i+];
for(int i=;i<n;++i)ans+=1ll*ls[i]*C(n-i)+1ll*rs[i+]*i-1ll*ls[i]*rs[i+];
for(int i=;i<=n;++i)for(int j=i;j<=n;++j){
if(cs[i][j]<k&&cs[i][j]){
if(cl[i][j])++l1[j][cl[i][j]];
if(cr[i][j])++r1[i][cr[i][j]];
}
}
for(int i=n;i;--i)for(int j=;j<k;++j)r1[i][j]+=r1[i+][j];
for(int i=;i<=n;++i)for(int j=k-;j;--j)r1[i][j]+=r1[i][j+];
for(int i=;i<n;++i)for(int j=;j<k;++j)ans+=1ll*l1[i][j]*r1[i+][k-j];
printf("%lld",ans);
return ;
}
第一行一个整数K,1<=K<=3000.
第二行一个字符串S,1<=len(S)<=3000,且只由'R','G','B'三种字符组成。
一个整数,即不同的四元组(a,b,c,d)的个数。
51nod1313 完美串的更多相关文章
- 完美串(区间dp)
完美串 Description 爱美之心人皆有之,GG也不例外.所以GG他对于完美串有一种热衷的爱.在GG眼中完美串是一个具有无比魅力的01子串.这个子串有之其魅力之处,对它取反后水平翻转,它又和它原 ...
- CF356E - Xenia and String Problem
也许更好的阅读体验 \(\mathcal{Description}\) 定义一种字符串\(gray\)串满足: 长度为奇数 正中间的字母只出现一次 左右两端相同,左右两端也是gray串 一个\(gra ...
- 2015 GDUT校赛
周末打了个GDUT的校赛,也是作为SCAU的一场个人排位. 比赛中竟然卡了个特判,1个半钟就切了5条了,然后一直卡. 还有其他两条可以做的题也没法做了,性格太执着对ACM来说也是错呀. 讲回正题 . ...
- 完美的代价(swap成回文串、贪心)
Description 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的. 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串 ...
- 回文串---吉哥系列故事——完美队形II
HDU 4513 Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出 ...
- hdu----(4513)吉哥系列故事——完美队形II(manacher(最长回文串算法))
吉哥系列故事——完美队形II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- (回文串 Manacher)吉哥系列故事——完美队形II -- hdu -- 4513
http://acm.hdu.edu.cn/showproblem.php?pid=4513 吉哥系列故事——完美队形II Time Limit: 3000/1000 MS (Java/Others) ...
- [RouterOS] ROS对接碧海威或PA等流控实现完美流控详细教程(附脚本全免费)
前言: 经常在群里看到不少朋友争论海蜘蛛 ROS 维盟 爱快 碧海威 流控大师 Woyos等等软路由,哪个好.实际上,网络产品是复杂的,现在的软路由功能上已经远远不是单独的路由了.每种产品都有他本身的 ...
- HDU 4513 吉哥系列故事——完美队形II (Manacher变形)
题意:假设有n个人按顺序的身高分别是h[1], h[2] ... h[n],从中挑出一些人形成一个新的队形,新的队形若满足以下要求,则就是新的完美队形: 1.连续的 2.形成回文串 3.从左到中间那 ...
随机推荐
- Core Java Volume I — 3.6. Strings
3.6. StringsConceptually, Java strings are sequences of Unicode characters(Java的字符串是一个Unicode序列). Fo ...
- ubuntu 登录循环
星期一大清早一来,就出现这毛病.折腾了办个多小时,终于搞定: 我的原因:上周五的时候为了装hive改动了/etc/enviroment里面的东西,导致出错. 解决办法:1.Ctrl + Alt + F ...
- (进阶篇)Cookie与 Session使用详解
1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 ...
- sticky bit
• Sticky Bit这个Sticky Bit当前只针对目录有效,对文件没有效果.SBit对目录的作用是:“在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时 ...
- Java-->用递归方法复制目录、子目录以及文件(文件用到IO流)
package com.dragon.java.newcopyfile; import java.io.File; import java.io.FileInputStream; import jav ...
- 153. Find Minimum in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- HTML DOM部分---做竖向横向的下拉导航 下拉菜单 图片轮播(圆点、箭头) 选项卡 进度条;
1,竖向下拉导航 鼠标单击打开 再打击关闭 <style> *{ margin:0px auto; padding:0px;} div{ width:100px; height:50px; ...
- java中将汉字转换成16进制
技术交流群:233513714 /** * 将汉字转换车16进制字符串 * @param str * @return st */ public static String enUnicode(Stri ...
- 排序算法总结(一)插入排序【Insertion Sort】
最近在忙着找工作,以前看的排序算法都忘记了,悲剧啦T T现在来回顾一下吧. 这边推荐一个算法可视化的网站,非常有用.http://visualgo.net/ 一.插入排序的思想(Wikipedia) ...
- Visual Studio 2012 离线升级包的制作
通过CMD执行“VS2012.3.exe/layout”命令,就可以把在线升级的文件保存到本地,这样一来,只要把下载出来的文件打包上传,然后分享出去,所谓的“VS2012 Update 3 离线升级包 ...