宝石串(蓝桥训练)

题目链接

https://www.luogu.com.cn/problem/P2697

解题思路

前缀和(或者dp,但是我找了好久都没有找到dp的题解,难道大家都不会dp做法吗?我反正不会)
有一个G,前缀和-1;有一个R前缀和+1。
找到距离最远且前缀和相等的两个位置,索引相减就是相差的个数,即最长宝石串。
举例:
G R G G R G
数值: 0 -1 1 -1 -1 1 -1
前缀和:0 -1 0 -1 -2 -1 -2
最远且前缀和相等的是第一个G和最后一个R吧,对应索引之差就是4,即宝石串为RGGR。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
char s[N];
int cnt[N];
int main(){
    cin>>s+1;
    int len=strlen(s+1);
    cnt[0]=0;
    for(int i=1;i<=len;i++)
        if(s[i]=='G') cnt[i]=cnt[i-1]-1;
        else if(s[i]=='R') cnt[i]=cnt[i-1]+1;

    int ans=0;
    for(int i=0;i<=len;i++)//从0开始!!! 
        for(int j=i+1;j<=len;j++)
            if(cnt[i]==cnt[j]) ans=max(ans,j-i);

    cout<<ans<<endl;
}

最后

要是会了dp做***补题解的。

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
985本硕1个中小厂of...
点赞 评论 收藏
分享
牛客nb666号:见天才的门槛罢了查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务