Description

Sample Input

6 JANJETINA 5 1 J 1 A 6 N 6 I 5 E

Sample Output

1 0 2 1 1

题意:给你一个长度小于等于10^6的字符串,然后每次让它循环铺盖,构成层数为n的塔,让你求得第i层塔中某个字符的个数。

思路:首先要注意到字符串是从左到右覆盖该行和从右到做覆盖该行不影响结果,所以我们全部考虑为从左到右覆盖。我们先遍历一遍字符串,用vector<int>vect[30]记录字符为i的所有位置。然后我们看c是不是能被字符串的长度len整除,如果能,那么答案就是vec[c-'A'+1].size()*c/len,如果不能整除,那么我们就要把余下的部分算完。当我们把中间的整段字符串都去掉的时候,余下的部分可能是前面一串,或者后面一串,或者前面后面都有剩下的,这里一开始我直接算前一串的开头到len-1中的数量加上后一串的0到结尾的数量,但是wa了,因为这样的想法是错误的。因为我这样算可能会包含已经算过的,比如abcdefabcdef,如果我选第2个b和倒数第2个e,那么我这样算的话,会包含之前算过的,因为两个字符间的距离大于len了。所以我们要采用别的方法,起始点q固定,尾节点变为(q+(c%len))%len,那么起始点和尾节点之间的距离一定小于len了,这样就不会重复算了。

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<bitset>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef long double ldb;
#define inf 99999999
#define pi acos(-1.0)
#define maxn 1000050
vector<int>vec[30];
vector<int>::iterator it;
int len;
int chuli(int pos,int bianhao)
{int i,j;int p;p=upper_bound(vec[bianhao].begin(),vec[bianhao].end(),pos)-vec[bianhao].begin();return p;
}
int getkaitou(ll ceng)
{int i,j;ll sum;if(ceng==1)return 0;if(ceng%2==0)sum=( (ceng/2%len)*((ceng-1)%len)+1 )%len;else sum=( (ceng%len)*((ceng-1)/2%len)+1 )%len;if(sum==0)sum=len-1;else sum--;return sum;
}
char s[maxn];int main()
{int m,i,j;ll n,c;while(scanf("%lld",&n)!=EOF){scanf("%s",s);len=strlen(s);for(i=1;i<=26;i++)vec[i].clear();for(i=0;i<len;i++){vec[s[i]-'A'+1].push_back(i);}char str[10];int p;ll sum;scanf("%d",&m);while(m--){scanf("%lld%s",&c,str);int bianhao=str[0]-'A'+1;int kaitou=getkaitou(c);if(c%len==0){printf("%lld\n",(ll)vec[bianhao].size()*(ll)(c/len) );continue;}ll beishu=c/len;sum=0;sum+=(ll)beishu*(ll)vec[bianhao].size();ll jianju=c%len;int jiewei=(kaitou+jianju-1)%len;if(kaitou<=jiewei){printf("%lld\n",sum+chuli(jiewei,bianhao)-chuli(kaitou-1,bianhao)  );}else{printf("%lld\n",sum+chuli(jiewei,bianhao)+chuli(len-1,bianhao)-chuli(kaitou-1,bianhao) );}}}return 0;
}

转载于:https://www.cnblogs.com/herumw/p/9464521.html

zjnu1730 PIRAMIDA(字符串,模拟)相关推荐

  1. CF5A Chat Server's Outgoing Traffic(字符串模拟,find函数的应用)难度⭐

    题意翻译 Polycarp正在开发一个名为"Polychat"的新项目.按照IT的现代倾向,他决定,这个项目也应该包含聊天.为了实现这一目标,Polycarp在笔记本电脑前花费了几 ...

  2. 剑指offer:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abc ...

  3. 【Luogu1580】yyy loves Easter_Egg I(纯字符串模拟)

    problem 保持队形(我们认为只要这一句内含有且恰好含有一次@,@的人和上一句话一样就算为队形) 若艾特的人与第一个人不同,就算队形被打破,油炸失败.若这个人在队形被打破之前出来吱声了,或者就是他 ...

  4. POJ 3095 Linear Pachinko 字符串模拟

    http://poj.org/problem?id=3095 简单字符串模拟 Linear Pachinko Time Limit:1000MSMemory Limit:65536K Descript ...

  5. 洛谷 - P1308 统计单词数(字符串+模拟)

    题目链接:点击查看 题目大意:给出一个字符串a和字符串b,现在问字符串b中有多少个单词与字符串a相等,并记录第一次出现的位置 题目分析:看似很简单的一个模拟题,其实包含了不少需要注意的地方: stri ...

  6. 【openjudge】【字符串+模拟】1777:文件结构“图”

    [题目传送门:]戳 [描述:] 在计算机上看到文件系统的结构通常很有用.Microsoft Windows上面的"explorer"程序就是这样的一个例子.但是在有图形界面之前,没 ...

  7. FZU 2122 又见LKity 简单的字符串模拟

    点击打开链接 Problem 2122 又见LKity Accept: 76    Submit: 266 Time Limit: 1000 mSec    Memory Limit : 32768 ...

  8. 洛谷 P1598 垂直柱状图【字符串+模拟】

    P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...

  9. 洛谷 P1055 ISBN号码【字符串+模拟】

    P1055 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其 ...

最新文章

  1. Angular应用提高打包速度
  2. EasyDL桌面版发布!3天体验学习
  3. 帝国CMS列表分页样式(三)[!--show.listpage--]
  4. Android5.1设备无法识别exFAT文件系统的64G TF卡问题
  5. 杭电1867 A + B for you again
  6. 代码生成器的存在价值 选择自 mechiland 的 Blog
  7. ASP.NET Core中的OWASP Top 10 十大风险-失效的访问控制与Session管理
  8. 用HTML做一个简单的web登录页面,简单的JavaWeb注册登录案例
  9. Swagger 官方 Starter 配上这个增强方案是真的香!
  10. exists 实现查看表Activity中FmyId=1(具体数字在程序中动态给定)的好友发起的活动
  11. 【洛谷 P1070】道路游戏 (DP)
  12. flutter json转对象_在 Flutter 使用 Redux 来共享状态和管理单一数据
  13. 克莱姆法则(cramer法则)详解
  14. 使用Scikit Learn的分类器探索Iris数据集
  15. 【信息融合】基于matlab BP神经网络和DS证据理论不确定性信息融合问题【含Matlab源码 2112期】
  16. We Will Rock You
  17. 树莓派3B+安装官方原版系统
  18. 李永辉:IBM大数据产品及实践路线图
  19. 数仓和数据中台长期霸权,数据湖最稳
  20. 网络层IP协议—ipv4

热门文章

  1. 【CodeForces - 214B】Hometask (模拟,有坑)
  2. 几位无人驾驶领域的杰出科学家
  3. json 潜逃 结构体_JSON还原为结构体 - osc_t5zhwnvx的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 食饵捕食者模matlab,几类食饵-捕食者模型的定性分析和数值模拟
  5. Numpy实现酒鬼漫步问题【以及randint()、where()、cumsum()、argmax()的用法详解】
  6. leetcode1085. 最小元素各数位之和 py不止是字符串的神!
  7. redis——NOSQL及redis概述
  8. 数据结构课上笔记10
  9. UNIX(进程间通信):04---孤儿进程
  10. 《数据结构上机实验(C语言实现)》笔记(2 / 12):线性表