求调,悬一关
查看原帖
求调,悬一关
742462
truekun楼主2025/1/24 23:37
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[2000005];
int sum[2000005];
const int mod=998244353;
int m[2000005];
void check(){
	int w=1;
	for(int i=1;i<=2e6;i++){
		w=(w*2)%mod;
		m[i]=w;
	}
}
signed main(){
	check();
	int t;
	cin>>t;
	m[0]=1;
	while(t--){
		memset(sum,0,sizeof(sum));
		int mmin=1e18;
		int n;
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			sum[i]=sum[i-1]+a[i];
			mmin=min(mmin,sum[i]);
		}
		int ans=0;
		for(int i=1;i<=n;i++){
			int num=0;
			for(int j=1;j<=i;j++){
				if(sum[j]>=0) num++;
			}
			if(sum[i]==mmin){
				ans=(ans+m[num+n-i])%mod;
			}
		}
		cout<<ans%mod<<endl;
	}
	return 0;
} 
/*
1
4
2 -5 3 -3
*/
2025/1/24 23:37
加载中...