https://vjudge.net/problem/CodeForces-1300A
题目大意:给一个有
个元素的数组
,每次操作可使
,问最少经过多少次操作可以使
且
。
思路:遍历一遍同时记录元素之和,设为 ,以及 的个数,设为 ,分类讨论即可,详见代码。
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int sum=0,cnt=0,ans=0,v;
for(int i=0;i<n;i++)
{
scanf("%d",&v);
sum+=v;
if(v==0)
++cnt;
}
if(!cnt&&sum)
printf("0\n");
else
{
if(cnt)
ans=cnt,sum+=cnt;
if(!sum)
++ans;
printf("%d\n",ans);
}
}
return 0;
}