A. Least Product
题意:给出一个数组,每个数组中的数,都可以修改为从0到该数中的任意一个数,比如第一个数为5,可以修改为0-5之间的任意一个数,-5可以修改为-5-0中的任意一个数,要用最小的操作数将该数组的累积乘积为最小的
思路:假如说这个数组中存在负树,负数的数目是奇数,就不需要再进行操作,已经最小了,要是无负数,但累计乘数为0,那么不需要操作,不为0,那么则只需要,将第一个数修改为0,假如说负数为偶数,那么也只需要将第一个数修改为0
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void test()
{
ll n,sum=1,cn0=0,cn1=0,cn2=0,_min=INT_MAX;
cin>>n;
vector<ll>v(n+1);
for(int i=1;i<=n;i++) {
cin >> v[i];
sum*=v[i];
if(v[i]<0)
cn1++;
if(v[i]==0)
cn0++;
_min=min(v[i],_min);
}
if(cn1%2==1||cn0)
{
cout<<0<<endl;
return ;
}else
{
cout<<1<<endl;
cout<<1<<" "<<0<<endl;
}
}
signed main()
{
ll t;;
cin>>t;
while(t--)
test();
}
B
明天期末结束就补B题
浙公网安备 33010602011771号