思路:dp
转载大佬思路
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=20010;
int a[N],f[N][2];
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int n;scanf("%d",&n);
char s[5];int x;
for(int i=1;i<=n;i++)
{
scanf("%s %d",s+1,&x);
if(s[1]=='L') a[i]=-x;
else a[i]=x;
}
f[0][0]=0;f[0][1]=0;
for(int i=1;i<=n;i++)
{
if(a[i]>0)
{
f[i][0]=f[i-1][0]+a[i];
f[i][1]=f[i-1][1]+a[i];
}
else
{
f[i][0]=max(0,f[i-1][0]+a[i]);
f[i][1]=max(0,max(f[i-1][0],f[i-1][1]+a[i]));
}
}
printf("%d\n",max(f[n][0],f[n][1]));
}
}