题意:给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个数列的这n种变换里,
A(0): a1,a2,…,an-1,an
A(1): a2,a3,…,an,a1
…
A(n-2): an-1,an,…,an-3,an-2
A(n-1): an,a1,…,an-2,an-1
有多少是正的数列。
写给自己看的 不太明白 还得再研究研究
#include<iostream>
#include<cmath>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
int a[500005],vis[500005];
int main()
{
int t,T=0;
cin>>t;
while(t--)
{
memset(vis,0,sizeof(vis));
int n;
cin>>n;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
ll temp=0;
for(int i=n-1;i>=0;i--)
{
temp+=a[i];
if(temp>0)
{
vis[i]=1;
temp=0;
}
}
if(temp<0)
{
for(int i=n-1;i>=0;i--)
{
temp+=a[i];
if(temp>0)
break;
else
vis[i]=0;
}
}
int cnt=0;
for(int i=n-1;i>=0;i--)
if(vis[i])
cnt++;
printf("Case %d: %d\n", ++T, cnt);
}
return 0;
}