AtCoder - 4496 G - k-DMC

题目

长度为n的字符串,q次查询,问“DMC”(不要求连续)在字符串中出现的次数,其中D和M的距离不超过k。

错误思路

通过遍历字符串中的每一个“M”,再移动窗口,处理左右“D”、“C”的数量。(TLE)

题解

  • 滑动窗口,维护当前窗口中"D"、“M”、“DM”的数量,遇“C”则ans加上"DM"的数量。

    代码

#include <cstdio>
#include <iostream>
#include <vector>
#include <set>
#include <ctime>
#include <cstdlib>
using namespace std;
typedef long long ll;
int main(){
    int n,q;
    string s;
    cin>>n>>s>>q;
    while (q--) {
        int k;cin>>k;
        ll d=0,m=0,dm=0,dmc=0,i;
        for(i=0;i<k;i++){
            switch (s[i]) {
                case 'D':
                    d++;
                    break;

                case 'M':
                    dm+=d;
                    m++;
                    break;

                case 'C':
                    dmc+=dm;
            }
        }
        for(;i<n;i++){
            switch (s[i-k]) {
                case 'D':
                    d--;
                    dm-=m;
                    break;

                case 'M':
                    m--;
            }
            switch (s[i]) {
                case 'D':
                    d++;
                    break;

                case 'M':
                    dm+=d;
                    m++;
                    break;

                case 'C':
                    dmc+=dm;
            }
        }
        printf("%lld\n",dmc);
    }
}

AtCoder - 4496 G - k-DMC的更多相关文章

  1. 二分箭术--G&K稳健过神思路

    自从资料片开始,一直在思考稳定可靠的过神思路,现在有眉目了,试验了几把感觉不错,先分享如下: 1)只开2个分城,特殊情况除外.Re: 经过多次打的经验,开2个分城比开3个分城更容易选址,政策更快,快乐 ...

  2. Atcoder Regular-074 Writeup

    C - Chocolate Bar 题面 There is a bar of chocolate with a height of H blocks and a width of W blocks. ...

  3. 【AtCoder】AtCoder Petrozavodsk Contest 001

    A - Two Integers 如果\(X\)是\(Y\)的倍数的话不存在 可以输出\(X \cdot (\frac{Y}{gcd(X,Y)} - 1)\) 代码 #include <bits ...

  4. AtCoder Beginner Contest 113 C

    C - ID Time limit : 2sec / Memory limit : 1024MB Score: 300 points Problem Statement In Republic of ...

  5. Atcoder E - RGB Sequence(dp)

    题目链接:http://arc074.contest.atcoder.jp/tasks/arc074_c 题意:一共有3种颜色,红色,绿色,蓝色.给出m个要求l,r,x表示在区间[l,r]内要有x种不 ...

  6. AtCoder,Codeforces做题记录

    AGC024(5.20) 总结:猜结论,“可行即最优” B: 给定一个n的排列,每次可以将一个数移到开头或结尾,求变成1,2,...,n所需的最小步数. 找到一个最长的i,i+1,...,j满足在排列 ...

  7. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  8. POJ 2449 Remmarguts' Date --K短路

    题意就是要求第K短的路的长度(S->T). 对于K短路,朴素想法是bfs,使用优先队列从源点s进行bfs,当第K次遍历到T的时候,就是K短路的长度. 但是这种方法效率太低,会扩展出很多状态,所以 ...

  9. K - Treasure Exploration - POJ 2594(最小路径覆盖+闭包传递)

    题意:给一个有向无环图,求出来最小路径覆盖,注意一个点可能会被多条路径重复 分析:因为有可能多条路径走一个点,可又能会造成匹配的不完全,所以先进行一次闭包传递(floyd),然后再用二分匹配的方法求出 ...

随机推荐

  1. linux中sleep函数的使用和总结

    在linux编程中,有时候会用到定时功能,常见的是用sleep(time)函数来睡眠time秒:但是这个函数是可以被中断的,也就是说当进程在睡眠的过程中,如果被中断,那么当中断结束回来再执行该进程的时 ...

  2. 关于对STL容器重载运算符的问题

    注意:下文中vector数组指的是每个数组元素都是一个vector的数组 大部分有序STL容器都重载了小于号,且比较方式是对容器中元素进行字典序比较. 此时如果你写\(bool\ operator&l ...

  3. 请求与上传文件,Session简介,Restful API,Nodemon

    作者 | Jeskson 来源 | 达达前端小酒馆 请求与上传文件 GET请求和POST请求 const express = require('express'); const app = expre ...

  4. 解决 ora-01795 的问题

    ''' <summary> ''' 在 oracle 里 , where in 语句有可能造成问题 : ORA-01795:列表中的最大表达式数为1000 ''' 如果我们在拼接where ...

  5. 主流chatbot机器人调研

    wit.ai api.ai microsoft bot frameword rasa pydial 问答系统 语义匹配 语义表示式匹配与交互式匹配.语义表示式匹配是将用户query与候选query分别 ...

  6. Scala Http 请求调用 - scalaj-http

    Simplified Http This is a fully featured http client for Scala which wraps java.net.HttpURLConnectio ...

  7. jq数字翻页效果,随机数字显示,实现上下翻动效果

    最近在做一个项目,需要实时展示一串数字,要有类似于日历翻页的效果,在网上找寻了一番,发现dataStatistics这个插件http://www.jq22.com/jquery-info8141能实现 ...

  8. Oracle逻辑结构学习笔记

    数据库(Database)由若干表空间(Tablespace)组成,表空间(Tablespace)由若干段(Segment)组成,段(Segment)由若干区(Extent)组成,区(Extent)又 ...

  9. Laravel源码解析之model(代码)

    本篇文章给大家带来的内容是关于Laravel源码解析之model(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 提前预祝猿人们国庆快乐,吃好.喝好.玩好,我会在电视上看 ...

  10. MAC安装Node.js

    官网下载Node.js Node.js v10.16.3 to /usr/local/bin/node • npm v6.9.0 to /usr/local/bin/npm Make sure tha ...