cf c(map套pair)

Posted goto_1600

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf c(map套pair)相关的知识,希望对你有一定的参考价值。


题意:
给定个string,让你从1~i每个位置,求出来d和k比值相同的段。
思路:
用个map来记录约分后的数量,太妙了。没想到。刚好就是a,b约分完出现的次数。

// Problem: C. Diluc and Kaeya
// Contest: Codeforces - Codeforces Round #724 (Div. 2)
// URL: https://codeforces.com/contest/1536/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
#define IL inline
#define x first
#define y second
typedef long long ll;
using namespace std;
const int N=500010;
int sum[N];
map<pair<int,int>,int>mp;
int sum2[N];
int solve(int a,int b)
{
	int g=__gcd(a,b);
	a/=g;
	b/=g;
	mp[{a,b}]++;
	return mp[{a,b}];
}
int main()
{
	ios::sync_with_stdio(0);
	int t;
	cin>>t;
	while(t--)
	{
		mp.clear();
		int n;
		cin>>n;
		string s;
		cin>>s;
		s=" "+s;
		for(int i=1;i<=n;i++)
		{
			sum[i]=sum[i-1]+(s[i]=='D');
			sum2[i]=sum2[i-1]+(s[i]=='K');
			cout<<solve(sum[i],sum2[i])<<" ";
		}

		
		cout<<endl;
	}
    return 0;
}





以上是关于cf c(map套pair)的主要内容,如果未能解决你的问题,请参考以下文章

CF988 C. Equal Sums

C++/STL8. pair

cf1527 c Sequence Pair Weight

几何向量gcd+暴力枚举——cf552

CF988 C. Equal Sumsmap+pair/hash/任选两个序列,两个序列都除去他们中的一个数,使的总和相同

cf1499D. The Number of Pairs