SOS!急需dalao帮助的小蒟蒻
查看原帖
SOS!急需dalao帮助的小蒟蒻
68960
M_and_P_楼主2020/10/20 13:13

SOS

哪位大佬可知道蒟蒻的代码错在哪里了吗?万分感谢!!!Orz Orz Orz

#include<cstdio>
#include<algorithm>
using namespace std;
const int M=40005,N=20005;
int n,m,x[M];
int bucket[N],ans[M][6];
int main()
{
	scanf("%d%d",&n,&m);
	for (int i=1;i<=m;i++)
	{
		scanf("%d",&x[i]);
		bucket[x[i]]++;
	}
	//solve c and d
	for (int A=1;A<=n/9;A++)
	{
		int bi=2*A+1,sum=0;
		for (int di=9*A+1;di<=n;di++)//枚举D同时确定C 
		{
			if (bucket[di]>0&&bucket[di-A]>0)
			{
				ans[di][4]+=sum;
				ans[di-A][3]+=sum;
				for (;bi<di-7*A;bi++)//枚举b同时确定A 
				if (bucket[bi]>0&&bucket[bi-2*A]>0)
				{
					sum=sum+bucket[bi]*bucket[bi-2*A];
					int total=bucket[di]*bucket[di-A]*bucket[bi]*bucket[bi-2*A]; 
					ans[di][4]+=total/bucket[di];
					ans[di-A][3]+=total/bucket[di-A];
//					ans[bi][2]+=total/bucket[bi];
//					ans[bi-2*A][1]+=total/bucket[bi-2*A];
				
				}
			}
		}	
	} 
	//solve a and b
	for (int A=1;A<=n/9;A++)
	{
		int di=n,sum=0;
		for (int bi=n-7*A-1;bi>2*A;bi--)
		{
			if (bucket[bi]>0&&bucket[bi-2*A]>0)
			{
				ans[bi][2]+=sum;
				ans[bi-2*A][1]+=sum;
				for (;di>7*A+bi;di--)
				{
					if (bucket[di]>0&&bucket[di-A]>0)
					{
						sum+=bucket[di]*bucket[di-A];
						int total=bucket[di]*bucket[di-A]*bucket[bi]*bucket[bi-2*A];
						ans[bi][2]+=total/bucket[bi];
						ans[bi-2*A][1]+=total/bucket[bi-2*A];
					}
				}
			}
		}
	}
	for (int i=1;i<m;i++)
	printf("%d %d %d %d\n",ans[x[i]][1],ans[x[i]][2],ans[x[i]][3],ans[x[i]][4]);
	printf("%d %d %d %d",ans[x[m]][1],ans[x[m]][2],ans[x[m]][3],ans[x[m]][4]);
	return 0;
}
2020/10/20 13:13
加载中...