AtCoder - 4496 G - k-DMC
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的更多相关文章
- 二分箭术--G&K稳健过神思路
自从资料片开始,一直在思考稳定可靠的过神思路,现在有眉目了,试验了几把感觉不错,先分享如下: 1)只开2个分城,特殊情况除外.Re: 经过多次打的经验,开2个分城比开3个分城更容易选址,政策更快,快乐 ...
- 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. ...
- 【AtCoder】AtCoder Petrozavodsk Contest 001
A - Two Integers 如果\(X\)是\(Y\)的倍数的话不存在 可以输出\(X \cdot (\frac{Y}{gcd(X,Y)} - 1)\) 代码 #include <bits ...
- AtCoder Beginner Contest 113 C
C - ID Time limit : 2sec / Memory limit : 1024MB Score: 300 points Problem Statement In Republic of ...
- Atcoder E - RGB Sequence(dp)
题目链接:http://arc074.contest.atcoder.jp/tasks/arc074_c 题意:一共有3种颜色,红色,绿色,蓝色.给出m个要求l,r,x表示在区间[l,r]内要有x种不 ...
- AtCoder,Codeforces做题记录
AGC024(5.20) 总结:猜结论,“可行即最优” B: 给定一个n的排列,每次可以将一个数移到开头或结尾,求变成1,2,...,n所需的最小步数. 找到一个最长的i,i+1,...,j满足在排列 ...
- 数组第K小数问题 及其对于 快排和堆排 的相关优化比较
题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...
- POJ 2449 Remmarguts' Date --K短路
题意就是要求第K短的路的长度(S->T). 对于K短路,朴素想法是bfs,使用优先队列从源点s进行bfs,当第K次遍历到T的时候,就是K短路的长度. 但是这种方法效率太低,会扩展出很多状态,所以 ...
- K - Treasure Exploration - POJ 2594(最小路径覆盖+闭包传递)
题意:给一个有向无环图,求出来最小路径覆盖,注意一个点可能会被多条路径重复 分析:因为有可能多条路径走一个点,可又能会造成匹配的不完全,所以先进行一次闭包传递(floyd),然后再用二分匹配的方法求出 ...
随机推荐
- 怎么写Java项目?
我们通常说的Java项目也都是JavaWeb,J2ee项目;现在说的是JavaWeb. 最简单的办法 多看别人项目源码 在别人基础上修改,而现在要一点一点掰开看看. 1.立项: 要做什么东西,最后的要 ...
- public.js
//通过id名称获取元素对象 function getid(idName){ return document.getElementById(idName); } //随机获取min-max的随机整数 ...
- Appium入门指南 - 环境搭建和Case编写
本文档将详细介绍如何搭建 Appium 的运行环境,以及如何编写一个简单的 UI 自动化测试用例.其中,也会穿插讲解一些 Appium 的基本知识.关于 Appium 的更多信息,大家可以查看官方文档 ...
- C++中整型变量的存储大小和范围
一.代码查看 #include <iostream> #include <climits> using namespace std; int main(void) { cout ...
- itms-services 方式安装ipa 无法连接到网址(eg. 我用的ip:172.26.167.82)
itms-services 方式安装ipa 无法连接到网址(eg. 我用的ip:172.26.167.82) 可能原因:1. ios没有信任自签名ssl证书2. plist文件返回错误,或者说是没有成 ...
- Harbor 忘记密码
Harbor密码重置 01,登入到harbor容器里面的数据库上 docker exec -it harbor-db /bin/bash 02,登入数据库 psql -h postgresql -d ...
- win7升级win10
win7的系统看起来不是特别爽,还是win10用得顺手. win7升级win10: https://jingyan.baidu.com/article/066074d60391e2c3c31cb04e ...
- App.vue 不触发 beforeRouteEnter
因为要在 router 对应一个路由的组件才可以触发 如果没有将 App.vue 作为某个路由组件(一般不会吧) 就不会触发该导航守卫 应该是想在每次进入应用时加载一些数据 所以放在 App.vue ...
- 获取 Rancher 中 Prometheus 的数据
1.需求 在 rancher 应用商店添加集群监控,会安装 prometheus.grafana:需要从 prometheus 的 api 中收集 pod 的一些信息. 查看grafana 配置的数据 ...
- ES6高级技巧(四)
238 数字->二进制->补码->十进制 const bitwise = N => { if (N < 2) { return N == 0 ? 1 : 0 } /*转化 ...