萌新求助
查看原帖
萌新求助
158400
晴空一鹤楼主2022/1/17 13:47

已调2hour+

求大佬帮帮忙吧(自己的数据测出来没问题,洛谷WA on#2#7#9#10

其中#2本地跑出来1465901,洛谷跑出来2???????

#include<bits/stdc++.h>
using namespace std;
long long int n,a[100001],t[100001],f[100001],su[100001],summ,MOD=1000000009;
struct node
{
	long long int a,b;
	friend bool operator<(node c,node d)
	{
		return c.a<d.a;
	}
}sum[100001];
long long int inline lb(long long int x)
{
	return x&(-x);
}
void inline in(long long int x,long long int y)
{
	y%=MOD;
	while(x<=n+1)
	{
		t[x]+=y%MOD;
		t[x]%=MOD;
		x+=lb(x);
	}
}
long long int inline q(long long int x)
{
 	long long int ans=0;
	while(x>0)
	{
		ans+=t[x]%MOD;
		ans%=MOD;
		x-=lb(x);
	}
	return ans%MOD;
}
int main()
{
  cin>>n;
  for(int i=1;i<=n;i++)
  {
  cin>>a[i];
  sum[i].b=i;
  sum[i].a=sum[i-1].a+a[i];
  }
  sort(sum+1,sum+n+1);
  for(int i=1;i<=n;i++)
  su[sum[i].b]=i;
  for(int i=1;i<=n;i++)
  {
  	summ+=a[i];
  	f[i]=q(su[i])%MOD;
  	if(summ>=0)
  	f[i]++;
  	f[i]%=MOD;
  	//cout<<i<<" "<<f[i]<<" "<<su[i]<<endl;
  	in(su[i],f[i]);
  }
  cout<<f[n]%MOD<<endl;
}
2022/1/17 13:47
加载中...