蓝桥杯 【算法赛】4.拯救美猴王 知识点:枚举优化

59 阅读1分钟

4.拯救美猴王【算法赛】 - 蓝桥云课 (lanqiao.cn)

1ea64bb8ff76a52ad311008f422e9ca.png

#include<bits/stdc++.h>
using namespace std;
int n; 
const int N=2e5+10;
int a[N];
int main()
{
    cin>>n;
    
    for(int i=0;i<n;i++)cin>>a[i];
	
	map<int,int>cnt;
	vector<int> Left(n+1),Right(n+1);
	for(int i=1;i<=n;i++)
	{
		Left[i]=cnt[a[i]];
		for(int j=1;j<i;j++)
		{
			cnt[a[i]+a[j]]++;
		}
	}
	
	cnt.clear();
	for(int i=n;i>=1;i--)
	{
		Right[i]=cnt[a[i]];
		for(int j=i+1;j<=n;j++)
		{
			cnt[a[i]+a[j]]++;
		}
	}
	
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		ans+=Left[i]*Right[i];
	}
	cout<<ans<<endl;
	return 0;
 } 

image.png