所有全部超时 请问思路是否也是错误的呢 ?请大佬指教
查看原帖
所有全部超时 请问思路是否也是错误的呢 ?请大佬指教
544330
Shaoshao楼主2021/7/29 13:21
#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
const int N=1e9+7;
int a[100005];
int main()
{
	int n,j=1,count=0;
	cin>>n;
	map<int,int>mp;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n-1;i++)			//记录所有的腰 放到map 
	{
		if(a[i]==a[i+1])
		{
			mp[a[i]]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n-1;j++)
		{
			if(mp[a[i]+a[j]]==1)	//如果遍历的另外两条边 相加的数以前标记过 
			{
				count++;
				mp[a[i]+a[j]]=2;	//可以凑成三角形 凑成后标记为2 
				count=count%N;
				//cout<<"*"<<a[i]<<" "<<a[j]<<"*\n";
			}
		}
	}
	cout<<count;
}
2021/7/29 13:21
加载中...