Codeforces 1311C Perform the Combo
这里我使用的是动态规划的方法,先对一串字符串计算它的前缀和。
核心代码
for(int i=0;i<len;i++) {if (i>0)for(int q=0;q<26;q++){ b[i][q]=b[i-1][q]; } b[i][a[i]-'a']++;}
到字符串末尾时,每个位置前面每个字母出现了多少次都记录其中。
开始我TimeOut的原因是使用memset频繁初始化了b这个二维数组,造成了时间上的浪费,日后这种问题,只需要初始化二维数组最开始的那一串。例如本题初始化
for(int i=0;i<26;i++)b[0][i]=0;
完整代码
#include <cstdio>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=2*1e5+50000;
char a[maxn];
int vis[30];
int b[maxn][28];
int main(void)
{int t;while(scanf("%d",&t)!=EOF)while(t--){memset(vis,0,sizeof(vis));for(int i=0;i<26;i++)b[0][i]=0; int n,m,k;scanf("%d%d",&n,&m);scanf("%s",a);int len=strlen(a);for(int i=0;i<len;i++){if (i>0)for(int q=0;q<26;q++){ b[i][q]=b[i-1][q]; } b[i][a[i]-'a']++;}for(int i=1;i<=m;i++){scanf("%d",&k);for(int j=0;j<26;j++){vis[j]+=b[k-1][j]; } }for(int j=0;j<26;j++){vis[j]+=b[len-1][j]; } for(int i=0;i<26;i++){printf("%d",vis[i]);if (i!=25) printf(" ");else printf("\n");}}return 0;
}
Codeforces 1311C Perform the Combo相关推荐
- Perform the Combo CodeForces - 1311C(字符串反转+树状数组)
You want to perform the combo on your opponent in one popular fighting game. The combo is the string ...
- codeforce 1311 C. Perform the Combo 前缀和
You want to perform the combo on your opponent in one popular fighting game. The combo is the string ...
- CodeForces - 1413C Perform Easily(双指针)
题意: 先给出一个长度为6的数组aaa ,再给出一个长度为nnn的数组 bbb ,求bbb 数组的每个元素减去aaa 数组中任意一个元素后,最后的数组bbb 中最大值与最小值之差最小是多少? 题解: ...
- codeforces 1311c
题意:给你一个一定顺序的字符串.你需要从左到右在键盘上按出他们. 给你m组数字,每组数字代表一个断点,即在按键时从左到右到这一位停止,并开始下一次.m组数字对应m次操作,在第m+1次操作,将会完整无误 ...
- codeforces 1311-c
方法一:打表 #include<bits/stdc++.h> using namespace std; const int maxn=2e5+10; int mis[maxn]; int ...
- CF1311C Perform the Combo 题解
题目:Link 暴力 - 前缀和 一道比较有趣的前缀和练习题 可以看出,题目有多次求 1∼pi1\sim p_i1∼pi 上每个字母的数量.我们可以很轻松的用前缀和解决,只是需要多开一维记录字母 设 ...
- CF1311C. Perform the Combo题解
description: 给定一个长度为 nnn 小写字母字符串 sss.(这里默认下标从 111 开始) 给定一个长度为 mmm 的数列 pip_ipi. 对于每一个 pip_ipi,表示你要统 ...
- 集训队每周一赛2020-03-06(思维+暴力)
第二次周赛 A 我是A题 CodeForces 1305 题解 B 我是B题 计蒜客 A1530 题解 C 我是C题 HDU 2673 题解 D 我是D题 CodeForces 304B 题解 E 我 ...
- 【Codeforces】Round #375 (Div. 2)
Position:http://codeforces.com/contest/723 我的情况 啊哈哈,这次raiting肯定要涨,接受过上次的教训,先用小号送肉,大号都是一发切,重回蓝咯 结果... ...
最新文章
- ThoughtWorks技术专家详解:企业级区块链原来是这么玩的
- 矩阵快速幂求大斐波那契poj3070(java)
- SAP按单生产和重复制造
- Kafka常用命令大全
- 产品经理如何锻炼自己看透事物本质的能力
- CANOPEN 学习(一) CANFestival 字典工具 环境搭建
- 使matlab2018支持使用VS2019编译
- Stata:何时使用线性概率模型而非Logit?
- 获取微信小程序二维码后返回一堆乱码
- Java里线程的隔离方式_线程隔离浅析
- 旧服务器显示器回收,服务器回收 下城淘汰电脑显示器回收价钱
- Python生成彩色字符画
- 海外自媒体多账号运营注意事项看这里!
- HiveSQL最近7/30日各品牌复购率
- php取微信名字和头像,微信小程序如何获取用户头像和昵称
- YuniKorn 介绍
- 【python实现视频解帧并保存到文件夹】
- springboot整合flyway出现Correct the classpath of your application so that it contains a single,compatibl
- 后台系统页面左边菜单按钮和右边内容的处理,后台系统页面出现双滚动
- echarts企业地区大数据图表模板代码