https://code.google.com/codejam/contest/6224486/dashboard#s=p0
肯定把朋友们都设置在第0位,在第i位前面必须至少有i个人鼓掌,所以答案加上i-sum[i-1]即可(sum是从第0位开始到第i-1位结束包括朋友的总人数)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1e4;
int n;
int sum[maxn];
char buf[maxn];
int main(){
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
int T;
scanf("%d",&T);
for(int ti=1;ti<=T;ti++){
scanf("%d%s",&n,buf);
memset(sum,0,sizeof(sum));
int ans=0;
sum[0]=buf[0]-'0';
for(int i=1;i<=n;i++){
if(sum[i-1]<i){
ans+=i-sum[i-1];
sum[i-1]=i;
}
sum[i]=sum[i-1]+buf[i]-'0';
}
printf("Case #%d: %d
",ti,ans);
}
return 0;
}