NBUT 1749 论WC串的唯一性(思维)

拟墨画扇 提交于 2019-11-28 08:33:16

https://ac.2333.moe/Problem/view.xhtml?id=1749

wc 在爬塔时遇到了一串神秘字符,隐隐之中有一股力量从中透出 
wc 很快发现了玄机,这个字符串中每一个含有“wc”的连续子序列都能为wc提供魔法值 
找出字符串能为wc提供多少魔法值 
注意如果某个连续子序列中有2个或以上“wc”,会导致魔法过剩,其魔法值为0

Input

第一行,数据组数T(1<=T<=10)  
接下来T行,每行一个字符串s,有小写英文字母组成  
 1<=|S|<=10^5  

Output

输出T行  
对于每组数据,输出只含有一个“wc”作为连续子序列的个数 

Sample Input

3
wcak
woc
awcawc

Sample Output

3
0
9

Hint

For first sample : wc,wca,wcak 
For third sample: awc,awca,awcaw,wc,wca,wcaw,cawc,awc,wc;

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	int T;
	cin >> T;
	while(T--)
	{
		string s;
		cin >> s;
		
		int last = 0;
		int id = s.find("wc");
		long long left = id + 1, right = 1, ans = 0;
		
		while(id != -1)
		{
			last = id + 1;
			id = s.find( "wc",id+2);
			
			if(id == -1) break;
			
			right = id - last + 1;
			
			ans +=  left * right;
			//cout << left << ' ' << right << endl;
			left = right;
		}
		
		if(last != s.length()-1) 
			right = s.length() - last;
		else 
			right = 1;
			
		ans += (long long) left * right;
		
		cout << ans << endl;
	}
	
	return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!