70AC 前三个小数据始终过不去,蒟蒻求助QAQ
查看原帖
70AC 前三个小数据始终过不去,蒟蒻求助QAQ
1320301
roundsmooth楼主2024/4/11 19:38
#include <bits/stdc++.h>
using namespace std;

int a[1000010],b[50100][3],c[1000010];
bool cpm(int a,int b) {
	return a>b;
}
int Mutp(int a) {
	return a*(a-1)/2;
}


int main() {
	int m,j,i,k;
	int dif,Num=0;
	cin>>m;

	for( i=0; i<m; i++) {
		cin>>a[i];
		c[a[i]]++;

	}
	sort(a,a+m,cpm);
	j=0;
	b[0][0]=a[0];
	for(i=0; i<m; i++) {

		if(i>=1&&a[i-1]!=a[i])b[++j][0]=a[i];//大小
		b[j][1]++;//个数
	}


	for(i=0; i<=j-1; i++) {
		b[i][2]=b[i][0]-b[i+1][0];
	}


	for(i=0; i<=j; i++) {
		dif=0;
		if(b[i][1]>=2) {
			//if(b[j][0]+b[i+1][0]>b[i][0])continue;
			{
				for(k=i; k<=(j-i-1)/2+i; k++) {
					dif+=b[k][2];
					if(c[dif]) {
						if(dif==b[k+1][0])Num+=Mutp(b[i][1])*Mutp(c[dif]);
						else	Num+=b[k+1][1]*c[dif]*Mutp(b[i][1]);
						Num=Num%1000000007;
						//cout<<Num<<' '<<dif<<' '<<b[k+1][0]<<' '<<b[i][0]<<endl;
					}

				}

			}
		}
	}
	Num=Num%1000000007;
	cout<<Num;
	return 0;
}







------------

****如上,不知道为什么前三个小数据过不去QAQ****























2024/4/11 19:38
加载中...