郑轻大不知名 2022-03-02 21:51 采纳率: 50%
浏览 43
已结题

学校周赛题,求解?(只会O(n*n)的解法,不懂怎么优化)

2897: 收集魔卡
题目描述
小樱正在辛苦的收集魔卡,我们把每一个地点的魔卡简化到一条直线上,下标从1-n,小樱可以选择从某个地点开始往后连续的搜集(走到某格将代表拾取此处的魔卡),并且在某一地点停止而去战斗(走一格也可以),但是为了在战斗时拥有更多的选择,她想要至少搜集到k个正义的魔卡,同时要避免搜集到召唤恶灵的魔卡,现在小樱想要知道她一共可以有多少个搜集的方案。
输入
第一行输入两个正整数n(1 <= n <= 200000) 和 k(1 <= k <= 15),
第二行输入一行字符串,字符串仅包含大写字母(A到Z)。
E代表正义的魔卡,G代表召唤恶灵的魔卡。
输出
输出小樱的有效搜索的方案数。
样例输入
5 1
EAEGE
样例输出
6
提示
合法的方案:
s[1,1] = E
s[1,2] = EA
s[1,3] = EAE
s[2,3] = AE
s[3,3] = E
s[6,6] = E

int main()
{
    int n,k;
    cin>>n>>k;
    string s;
    cin>>s;
    int res=0;
    for(int i=0;i<n;++i) {
       int j=i,sum=0;
       while(s[j]!='G'&&s[i]!='G'&&j<n) {
        if(s[j]=='E')
            ++sum;
        if(sum>=k)
            ++res;
            ++j;
       }
    }
    cout<<res;
    return 0;
}

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-03-02 21:57
    关注

    第10行的j<n条件写在第一个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 创建了问题 3月2日

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题