这里我使用的是动态规划的方法,先对一串字符串计算它的前缀和。
核心代码

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相关推荐

  1. Perform the Combo CodeForces - 1311C(字符串反转+树状数组)

    You want to perform the combo on your opponent in one popular fighting game. The combo is the string ...

  2. 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 ...

  3. CodeForces - 1413C Perform Easily(双指针)

    题意: 先给出一个长度为6的数组aaa ,再给出一个长度为nnn的数组 bbb ,求bbb 数组的每个元素减去aaa 数组中任意一个元素后,最后的数组bbb 中最大值与最小值之差最小是多少? 题解: ...

  4. codeforces 1311c

    题意:给你一个一定顺序的字符串.你需要从左到右在键盘上按出他们. 给你m组数字,每组数字代表一个断点,即在按键时从左到右到这一位停止,并开始下一次.m组数字对应m次操作,在第m+1次操作,将会完整无误 ...

  5. codeforces 1311-c

    方法一:打表 #include<bits/stdc++.h> using namespace std; const int maxn=2e5+10; int mis[maxn]; int ...

  6. CF1311C Perform the Combo 题解

    题目:Link 暴力 - 前缀和 一道比较有趣的前缀和练习题 可以看出,题目有多次求 1∼pi1\sim p_i1∼pi​ 上每个字母的数量.我们可以很轻松的用前缀和解决,只是需要多开一维记录字母 设 ...

  7. CF1311C. Perform the Combo题解

    description: 给定一个长度为 nnn 小写字母字符串 sss.(这里默认下标从 111 开始) 给定一个长度为 mmm 的数列 pip_ipi​. 对于每一个 pip_ipi​,表示你要统 ...

  8. 集训队每周一赛2020-03-06(思维+暴力)

    第二次周赛 A 我是A题 CodeForces 1305 题解 B 我是B题 计蒜客 A1530 题解 C 我是C题 HDU 2673 题解 D 我是D题 CodeForces 304B 题解 E 我 ...

  9. 【Codeforces】Round #375 (Div. 2)

    Position:http://codeforces.com/contest/723 我的情况 啊哈哈,这次raiting肯定要涨,接受过上次的教训,先用小号送肉,大号都是一发切,重回蓝咯 结果... ...

最新文章

  1. ThoughtWorks技术专家详解:企业级区块链原来是这么玩的
  2. 矩阵快速幂求大斐波那契poj3070(java)
  3. SAP按单生产和重复制造
  4. Kafka常用命令大全
  5. 产品经理如何锻炼自己看透事物本质的能力
  6. CANOPEN 学习(一) CANFestival 字典工具 环境搭建
  7. 使matlab2018支持使用VS2019编译
  8. Stata:何时使用线性概率模型而非Logit?
  9. 获取微信小程序二维码后返回一堆乱码
  10. Java里线程的隔离方式_线程隔离浅析
  11. 旧服务器显示器回收,服务器回收 下城淘汰电脑显示器回收价钱
  12. Python生成彩色字符画
  13. 海外自媒体多账号运营注意事项看这里!
  14. HiveSQL最近7/30日各品牌复购率
  15. php取微信名字和头像,微信小程序如何获取用户头像和昵称
  16. YuniKorn 介绍
  17. 【python实现视频解帧并保存到文件夹】
  18. springboot整合flyway出现Correct the classpath of your application so that it contains a single,compatibl
  19. 后台系统页面左边菜单按钮和右边内容的处理,后台系统页面出现双滚动
  20. echarts企业地区大数据图表模板代码

热门文章

  1. requests基础爬虫案例
  2. 通讯录管理系统C++代码
  3. linux下网卡的链路聚合-使我们的系统有条不紊的为客户服务
  4. 车票管理系统java_JAVA车票管理系统(简单GUI).docx
  5. 电工学习笔记——MOSFET选型技巧
  6. r7 7735H和r7 6800H选哪个 r77735H和6800H差距
  7. 小程序开发学习day1
  8. 新的ES6语法01—let:使用let关键字声明块范围的变量
  9. FFmpeg视频处理入门教程(新手必看)
  10. 有关计算机的英语作文一千字,英语作文1000词