桶思想求助
查看原帖
桶思想求助
273056
splendid_followers楼主2022/3/11 13:26

顺序装桶后对原数组去重

A-B=C转化为A-C=B

顺序查找B加入答案

#include<bits/stdc++.h>
using namespace std;
int n,c,s[100000],t[1000000],top=1;
int main()
{
	cin>>n>>c;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
	}
	sort(s+1,s+n+1);
	t[1]++;
	for(int i=2;i<=n;i++)
	{
		if(s[i]==s[i-1])t[top]++;
		else top++,t[top]++;
	}
	/*for(int i=1;i<=n;i++)cout<<s[i]<<" ";
	cout<<endl;
	for(int i=1;i<=top;i++)cout<<t[i]<<" ";
	*/
	unique(s+1,s+n+1);
	int sum=0;
/*	for(int i=1;i<=n;i++)cout<<s[i]<<" ";
	cout<<endl;*/
	/*for(int i=1;i<=top;i++)cout<<s[i]<<" ";
	cout<<endl;
	for(int i=1;i<=top;i++)cout<<t[i]<<" ";
	cout<<endl;*/
	for(int i=1;i<=top;i++)
	{
		int ans=s[i]-c;
		for(int j=1;j<=top;j++)
		{
		//	cout<<ans<<"!="<<s[j]<<endl;
			if(ans==s[j])
			{
				sum+=t[j];break;
			}
		}
	}
	cout<<sum;
}
2022/3/11 13:26
加载中...