BestCoder Round #88
分析:
A题统计字符串中连续字串全为q的个数,预处理以下或加个cnt就好了;
代码:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <bitset>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define Rof(i,a,b) for (int i=(a),_##i=(b); i>=_##i; i--)
#define rek(i,a,b) for (int i=(a),_##i=(b); i>=_##i; i--)
#define mem(a,b) memset(a,b,sizeof(a))
#define cpy(a,b) memcpy(a,b,sizeof(b))
#pragma comment(linker, "/STACK:102400000,102400000")
inline void read(int &x){x=; char ch=getchar();while(ch<'') ch=getchar();while(ch>=''){x=x*+ch-; ch=getchar();}}
char s[];
int t,cnt;
ll sum;
int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%s",s);int len=strlen(s);cnt=sum=;
for(int i=;i<len;++i) if(s[i]=='q') sum+=cnt,cnt++;else if(cnt) {sum+=cnt;cnt=;}
if(cnt) sum+=cnt;
printf("%lld\n",sum);
}
return ;
}
B题求出一个数字串的所有完全阿贝尔周期;
设S是一个数字串,定义函数occ(S,x)occ(S,x)表示S中数字x的出现次数。 例如:S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1。 如果对于任意的i,都有occ(u,i)=occ(w,i)occ(u,i)=occ(w,i),那么我们认为数字串u和w匹配。 例如:(1,2,2,1,3)\approx(1,3,2,1,2)(1,2,2,1,3)≈(1,3,2,1,2)。 对于一个数字串S和一个正整数k,如果SS可以分成若干个长度为k的连续子串,且这些子串两两匹配,那么我们称k是串S的一个完全阿贝尔周期。 给定一个数字串S,请找出它所有的完全阿贝尔周期 那么对于给定的n,从1-n枚举它的因子比如k,然后判断1-k是否与k+1~2*k,2*k+1~3*k...(t*k<=n)匹配,这里要处理一下,详情见代码
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <bitset>
using namespace std; #define LL long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define Rof(i,a,b) for (int i=(a),_##i=(b); i>=_##i; i--)
#define rek(i,a,b) for (int i=(a),_##i=(b); i>=_##i; i--)
#define mem(a,b) memset(a,b,sizeof(a))
#define cpy(a,b) memcpy(a,b,sizeof(b))
#pragma comment(linker, "/STACK:102400000,102400000")
inline void read(int &x){x=; char ch=getchar();while(ch<'') ch=getchar();while(ch>=''){x=x*+ch-; ch=getchar();}}
int t,n,cnt,a[],b[],p[],p1[];
int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);cnt=;
F(i,,n) scanf("%d",a+i);
for(int i=;i*i<=n;++i) if(n%i==)
{
for(int i=;i<=n;++i) p[i]=p1[i]=;
int x=n/i;
for(int j=;j<=i;++j) p[a[j]]++;
for(int k=i*;k<=n;k+=i)
{
for(int j=k-i+;j<=k;j++) p1[a[j]]++;
for(int j=;j<=i;++j) if(p[a[j]]*(k/i-)!=p1[a[j]]) goto l;
}
b[cnt++]=i;l:;
for(int i=;i<=n;++i) p[i]=p1[i]=;
for(int j=;j<=x;++j) p[a[j]]++;
for(int k=x*;k<=n;k+=x)
{
for(int j=k-x+;j<=k;j++) p1[a[j]]++;
for(int j=;j<=x;++j) if(p[a[j]]*(k/x-)!=p1[a[j]]) goto l1;
}
b[cnt++]=x;l1:;
}
sort(b,b+cnt);
printf("%d",b[]);
for(int i=;i<cnt;++i) if(b[i]!=b[i-])printf(" %d",b[i]);puts("");
}
return ;
}
BestCoder Round #88的更多相关文章
- HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力)
HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=59 ...
- bestcoder Round #7 前三题题解
BestCoder Round #7 Start Time : 2014-08-31 19:00:00 End Time : 2014-08-31 21:00:00Contest Type : ...
- BestCoder Round #89 02单调队列优化dp
1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01 HDU 5944 水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...
- BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元
BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy Init函数 然后统计就ok B. 博弈 题 不懂 推了半天的SG..... 结果这 ...
- Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- 暴力+降复杂度 BestCoder Round #39 1002 Mutiple
题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...
- 贪心 BestCoder Round #39 1001 Delete
题目传送门 /* 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 否则再在tot里减去多余的即为答案 用set容器也可以做,思路一样 */ # ...
- BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)
Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
随机推荐
- Mac 版 QQ 可直接访问 iPhone 的相册 ?!
在QQ的聊天窗口中,点击 发送图片 的按钮,会有两个选择项,其中一个就是 从iPhone相册中选取 ,如图 点击 从iPhone相册中选取 后,iPhone上的QQ会收到一条消息 “请选择要上传的照 ...
- 【ACM】魔方十一题
0. 前言打了两年的百度之星,都没进决赛.我最大的感受就是还是太弱,总结起来就是:人弱就要多做题,人傻就要多做题.题目还是按照分类做可能效果比较好,因此,就有了做几个系列的计划.这是系列中的第一个,解 ...
- R语言屏幕输出
cat("the total number is:",3+5,"\n") print(x, ...) ?print?cat?format ?write
- JS function的定义方法,及function对象的理解。
废话篇: 今天看到了Function的内容,各种晕,各种混淆有木有.简直是挑战个人脑经急转弯的极限啊.不过,最终这一难题还是被我攻克了,哇咔咔.现在就把这东西记下来,免得到时候又忘了就悲催了.... ...
- android异步任务详解 AsynTask
android提供了一套专门用于异步处理的类.即:AynsTask类.使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回. 其实,AsynTask类就是对Thread类的一个封装,并且加入了 ...
- Intellij IDEA13 创建多模块Maven项目
目标:构建一个类似于如下图所示的这种结构的Maven项目. 首先,需要选中“File”——>“New Project”如下图所示 选中“Maven”,设置项目名称与项目构建地址,点击“Next” ...
- jquery 获取点击事件的id;jquery如何获取当前触发事件的控件ID值
写html时这样绑定 <input type="text" name="address4" id="address4" onFocus ...
- Yii2 CSRF
一.CSRF 即Cross-site request forgery跨站请求伪造,是指有人冒充你的身份进行一些恶意操作. 比如你登录了网站A,网站A在你的电脑设置了cookie用以标识身份和状态,然后 ...
- Qt 控制watchdog app hacking
/************************************************************************** * Qt 控制watchdog app hack ...
- PDO防注入原理分析以及使用PDO的注意事项 (转)
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...