https://ac.nowcoder.com/acm/contest/11223/C
思路:不同的字符串转换成不同的数组下标,转换的工作让map来完成。
#include<iostream>
#include<map>
#include<vector>
using namespace std;
const int N = 5e5+10;
string s1[N];
int n,k;
long long sum; //会爆int,所以用long long
int main()
{
map<string,int>m;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>s1[i];
sum+=m[s1[i]];
m[s1[i]]++;
if(i>=k+1)
m[s1[i-k-1]]--;
}
printf("%lld\n",sum);
return 0;
}