当前位置: 首页 > news >正文

CF1206B Make Product Equal One

CF1206B Make Product Equal One


题目描述

给你一个有 n 个数的数组。你可以用 x(x为任意正整数) 的代价将数组中的任意一个数增加或减少 x ,你可以重复多次此操作。现在需要你用若干次操作使得 a_1·a_2·...·a_n = 1 (数组的乘积为1)。

比如,当 n=3 和数组为 [1,-3,0] 时,我们最少需要花费 3 的代价:用 2 的代价把 - 3增加到 - 1 ,再用 1 的代价把 0 减少到 - 1 ,数组就变成了 [1,-1,-1] ,然后 1·(-1)·(-1)=1 。

现在询问最少需要花费多少的代价使得数组的乘积为 1 。


输入格式

输入共两行。

第一行输入一个数 n ,表示数组的数字个数。

第二行输入 n 个数 a_i ,表示该数组。


输出格式

输出一个数,表示使得数组的乘积为 1 的最少的花费。


思路

显然,乘积为1即全为1和-1,且-1的个数为偶数。

第一步:小于-1的化为-1,大于1的化为1,0先不变

第二步:第一步之后如果-1的个数为奇数且0的个数为0,那么就有一个-1要化为1;如果有0,就可以补一个0为-1使-1的个数为偶数。


AC代码

#include <bits/stdc++.h>
using namespace std;int main()
{int t;cin >> t;int s = 0;int zero = 0;long long ans = 0;for (int i = 0; i < t; i++){int x;cin >> x;if (x < 0){s++;ans += -1 - x;}else if (x == 0){zero++;ans += 1;}else{ans += x - 1;}}if (s % 2 != 0 && zero == 0){ans += 2;}cout << ans;return 0;
}
http://www.hskmm.com/?act=detail&tid=36195

相关文章:

  • 软件工程第三次作业----结对项目
  • 关于莫比乌斯函数的应用1
  • 用deepseek写的一个求原根的程序
  • 操作备忘:在AE中让视频中间部分变慢
  • 记一次精简系统Windows11英文版离线安装中文语言包的过程
  • 阿里巴巴数据库开发手册
  • AI元人文:赋能公共治理、司法与监管的价值权衡新范式
  • 基础的sql练习,全都理解你就是高手了!
  • nginx快速实现平滑版本升级
  • Luogu P11159 【MX-X6-T5】 再生 题解 [ 蓝 ] [ 前缀和 ] [ 组合计数 ]
  • 王浩宇 102500416
  • 程序员修炼之路:从小工到专家 读书笔记 2
  • 程序员修炼之路:从小工到专家 读书笔记 3
  • 中级问题
  • 2025.10.21
  • 解答在同步以太坊事件数据时,如何保证后端服务在 API/RPC 不稳定情况下的可用性
  • 程序员修炼之道:从小工到专家 读书笔记 1
  • 好想好想你
  • 10.21日学习笔记
  • 数据库概述
  • 第1天(简单题 基础语法 数据类型、条件判断 、循环 循环嵌套、位运算, ASCII 码)
  • 24信计2班 17曾向嵩 pytorch读书报告
  • 关于第一次作业的时长统计
  • Go 语言问题解释
  • Keil_v5的用法
  • day 8
  • OI 笑传 #21
  • Day1文本格式化标签
  • 【C语言学习记录】你好世界
  • 1021