求助
查看原帖
求助
158400
晴空一鹤楼主2021/2/9 11:48

到底哪里错了???每次自测一如既往的对,每次提交一如既往的错

求各位大佬帮忙看看

#include<bits/stdc++.h>
using namespace std;
long long ans;
long long a[20001],t1[100001],t2[100001];   
long long t,n;
void inline r(long long &x)
{
  x=0;
  int f=1;
  char c=getchar();
  while(c<'0'||c>'9')
   {
   if(c=='-')
   f=-1;
   c=getchar();
   }
   while(c>='0'&&c<='9')
   {
	 x=(x<<1)+(x<<3)+(c^48);
	 c=getchar();
   }
	 x=x*f;
}
void inline xgt21(int x)
{
	while(x<=n)
	{
		t2[x]++;
		x+=x&-x;
	}
}
void inline xgt22(long long x)
{
	while(x<=n)
	{
		t2[x]--;
		x+=x&-x;
	}
}
void inline xgt1(long long  x)
{
	while(x<=n)
	{
		t1[x]++;
		x+=x&-x;
	}
}
long long inline cxt1(long long  x)
{
	long long ans=0;
	while(x>0)
	{
		ans+=t1[x];
		x-=x&-x;
	}
	return ans;
}
long long inline cxt2(long long  x)
{
	long long ans=0;
	while(x>0)
	{
		ans+=t2[x];
		x-=x&-x;
	}
	return ans;
}
int main()
{

   r(t);r(n);
   while(t--)
   {
   	 ans=0;
   	 memset(a,0,sizeof(a));
   	 memset(t1,0,sizeof(t1));
   	 memset(t2,0,sizeof(t2));
   	 for(int i=1;i<=n;i++)
   	 r(a[i]);
   	 for(int i=2;i<=n;i++)
   	 xgt21(a[i]);
   	 for(int i=2;i<=n;i++)
   	 {
   	   xgt1(a[i-1]);
	   xgt22(a[i]);
	   ans+=cxt1(a[i]-1)*(cxt2(n)-cxt2(a[i]-1))+cxt2(a[i]-1)*(cxt1(n)-cxt1(a[i]-1));
	 }
	 printf("%lld\n",ans);

	 if(t)
	 r(n);
   }
}

2021/2/9 11:48
加载中...