柳市建设网站,平台推广是做什么,有做兼职的网站吗,网店美工培训Description Sample Input 6 JANJETINA 5 1 J 1 A 6 N 6 I 5 E Sample Output 1 0 2 1 1题意#xff1a;给你一个长度小于等于10^6的字符串#xff0c;然后每次让它循环铺盖#xff0c;构成层数为n的塔#xff0c;让你求得第i层塔中某个字符的个数。 思路#xff1a;首先要… 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层塔中某个字符的个数。 思路首先要注意到字符串是从左到右覆盖该行和从右到做覆盖该行不影响结果所以我们全部考虑为从左到右覆盖。我们先遍历一遍字符串用vectorintvect[30]记录字符为i的所有位置。然后我们看c是不是能被字符串的长度len整除如果能那么答案就是vec[c-A1].size()*c/len,如果不能整除那么我们就要把余下的部分算完。当我们把中间的整段字符串都去掉的时候余下的部分可能是前面一串或者后面一串或者前面后面都有剩下的这里一开始我直接算前一串的开头到len-1中的数量加上后一串的0到结尾的数量但是wa了因为这样的想法是错误的。因为我这样算可能会包含已经算过的比如abcdefabcdef,如果我选第2个b和倒数第2个e那么我这样算的话会包含之前算过的因为两个字符间的距离大于len了。所以我们要采用别的方法起始点q固定尾节点变为(q(c%len))%len,那么起始点和尾节点之间的距离一定小于len了这样就不会重复算了。 #includeiostream
#includestdio.h
#includestdlib.h
#includestring.h
#includemath.h
#includevector
#includemap
#includeset
#includequeue
#includestack
#includestring
#includebitset
#includealgorithm
using namespace std;
typedef long long ll;
typedef long double ldb;
#define inf 99999999
#define pi acos(-1.0)
#define maxn 1000050
vectorintvec[30];
vectorint::iterator it;
int len;
int chuli(int pos,int bianhao)
{int i,j;int p;pupper_bound(vec[bianhao].begin(),vec[bianhao].end(),pos)-vec[bianhao].begin();return p;
}
int getkaitou(ll ceng)
{int i,j;ll sum;if(ceng1)return 0;if(ceng%20)sum( (ceng/2%len)*((ceng-1)%len)1 )%len;else sum( (ceng%len)*((ceng-1)/2%len)1 )%len;if(sum0)sumlen-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);lenstrlen(s);for(i1;i26;i)vec[i].clear();for(i0;ilen;i){vec[s[i]-A1].push_back(i);}char str[10];int p;ll sum;scanf(%d,m);while(m--){scanf(%lld%s,c,str);int bianhaostr[0]-A1;int kaitougetkaitou(c);if(c%len0){printf(%lld\n,(ll)vec[bianhao].size()*(ll)(c/len) );continue;}ll beishuc/len;sum0;sum(ll)beishu*(ll)vec[bianhao].size();ll jianjuc%len;int jiewei(kaitoujianju-1)%len;if(kaitoujiewei){printf(%lld\n,sumchuli(jiewei,bianhao)-chuli(kaitou-1,bianhao) );}else{printf(%lld\n,sumchuli(jiewei,bianhao)chuli(len-1,bianhao)-chuli(kaitou-1,bianhao) );}}}return 0;
}转载于:https://www.cnblogs.com/herumw/p/9464521.html