【50.26%】【hdu 5907】Find Q
2024-08-26 13:18:07
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others)
问题描述
Byteasar迷恋上了’q’这个字母。
在他眼前有一个小写字母组成的字符串SS,他想找出SS的所有仅包含字母’q’的连续子串。但是这个字符串实在是太长了,你能写个程序帮助他吗?
输入描述
输入的第一行包含一个正整数T(1\leq T\leq10)T(1≤T≤10),表示测试数据的组数。
对于每组数据,包含一行一个小写字母组成字符串SS,保证SS的长度不超过100000100000。
输出描述
对于每组数据,输出一行一个整数,即仅包含字母’q’的连续子串的个数。
输入样例
2
qoder
quailtyqqq
输出样例
1
7
【题解】
连续的子串是指a[x],a[x+1]..a[y];这样的东西。
x不同,或y不同都是不同的子串。
可以证明。一个长度为l的连续q,可以累加答案1+2+…+l;
注意用long long;
一堆学长看到答案为int类型就疯狂hack…
#include <cstdio>
#include <cstring>
int T,len;
char s[101000];
long long f(long long n)
{
return (1 + n)*n / 2;
}
int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d", &T);
while (T--)
{
long long temp = 0;
scanf("%s", s);
len = strlen(s);
int i = 0;
while (i <= len - 1)
{
int j = i;
if (s[i] == 'q')
{
while (j+1 <= len-1 && s[j + 1] == 'q')
j++;
long long k = j - i + 1;
temp += f(k);
}
i = j + 1;
}
printf("%I64d\n", temp);
}
return 0;
}
最新文章
- JAVA通信系列一:Java Socket技术总结
- Oracle 外网访问
- centos 6.7 搭建tornado + nginx + supervisor的方法(已经实践)
- 软引用SoftReference异步加载图片
- iOS - (TableView中利用系统的 cell 设置 cell.textlabel 位置和大小)
- SMB带宽限制
- http 请求头
- codevs4373 窗口
- PHP函数参数的引用传递和值传递
- 【转载】 Searching过程粗略梳理
- JavaScript可以这样用
- jquery 点击按钮实现listbox的显示与隐藏,点击其他地方按钮外的地方,隐藏listbox
- 【转】jsp 表单form传值
- 流动python - 字符串KMP匹配
- Spring对jdbc支持
- OpenCV探索之路(二十七):皮肤检测技术
- python 文件和目录操作题库
- HDU - 1036
- linux 保存git的账号密码
- 一个好玩的小制作,以及在<;a/>;中的标签href=";javascript:;";/href=";javascript:void(0);";/href=";javascript:";的用法
热门文章
- 洛谷 P1757 通天之分组背包
- inode与ln命令
- [Javascript] Identify the most important words in a document using tf-idf in Natural
- java创建节点和单向链表
- WebService三大基本元素 SOAP WSDL UDDI
- 洛谷P1043 数字游戏
- android组件
- C++访问WebService gSoap方式
- 1.1 Introduction中 Apache Kafka™ is a distributed streaming platform. What exactly does that mean?(官网剖析)(博主推荐)
- 【Codeforces Round #431 (Div. 2) B】 Tell Your World