这题感觉不用讲,只有一点需要注意的就是永两者相乘来判断异号时,注意会爆int,强制转化成double就ok了;(题外话:最近没有怎么写博客了,主要是在看大白书,如果硬是要写的话感觉是为了写博客而写博客的了,,请原谅)
下面请上代码:
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=5e5+5;
int a[maxn];
bool cmp(int a,int b)
{
return abs(a)<abs(b);
}
int main()
{
//freopen("int.txt","r",stdin);
int n,t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n,cmp);
//for(int i=0;i<n;i++)printf("%d ",a[i]);
int cnt=1,cnt1=1;
for(int i=1;i<n;i++){
if(double(a[i])*a[i-1]<0)cnt++;
}
printf("%d\n",cnt);
}
return 0;
}