AcWing 3175. 人物相关性分析
原题链接
简单
作者:
i_11
,
2021-03-27 15:33:45
,
所有人可见
,
阅读 564
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
const int N = 1000010;
vector<int> Alice,Bob;
int k;
string s;
int main()
{
cin >> k;
cin.get(); // 接受空字符
getline(cin,s);
s += '.';
string temp = "";
for (int i = 0 ; i < s.size() ; i ++)
{
if (!isalpha(s[i])) //如果s[i]不是一个字母,那么s[i-1]之前的就是一个单词
{
if(temp == "Alice") Alice.push_back(i - temp.size() );
else if(temp == "Bob") Bob.push_back(i - temp.size() );
temp = "";
}
else temp += s[i];
}
int lp = 0 , rp = 0;
long long ans = 0;
int la = Alice.size();
int lb = Bob.size();
for (int i = 0 ; i < la ; i ++)
{
while (lp < lb &&Bob[lp] < Alice[i] - 3 - k) lp ++;
while (rp < lb &&Bob[rp] <= Alice[i] + 5 + k) rp ++;
if (rp - lp > 0) ans += rp - lp;
}
cout << ans << endl;
return 0;
}
厉害
强啊