当前位置: 首页 > 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.zskr.cn/news/26837.html

相关文章:

  • 关于莫比乌斯函数的应用1
  • 软件工程第三次作业----结对项目
  • 操作备忘:在AE中让视频中间部分变慢
  • 基础的sql练习,全都理解你就是高手了!
  • 102500416 王浩宇
  • 中级问题
  • 20251021周二日记
  • 好想好想你
  • 【C语言学习记录】你好世界
  • 解答这些常见的智能合约安全问题,并提供相应的防护措施
  • 读AI赋能05消费者盈余
  • 梦回大唐王一牛
  • 一文读懂字体文件
  • C++编程练习
  • L07_在RuoYI项目中添加自己的接口并实现CRUD功能(轻松+AI版)
  • hevc解码器下载
  • [网络] [iproute2] tc命令:Linux网络异常模拟(Network Emulation, netem)指南
  • NOI 八
  • 10.18测试
  • [PaperReading] DeepSeek-OCR: Contexts Optical Compression
  • Win10安装WindowsCamera相机
  • 简易的本地部署OI-Wiki方法 for CCSP
  • [systemd] 如何为systemd服务进行资源限制
  • 宝塔面板
  • 机器学习基础 -- 线性回归模型
  • 软件工程作业三
  • 一键生成爆款文章,并自动发布!
  • 1188. 设计有限阻塞队列
  • MySQL分页解决方案
  • Failed to resolve: org.webrtc:google-webrtc:1.0.32006