zoukankan      html  css  js  c++  java
  • 题解 CF1206B 【Make Product Equal One】

    感谢 @一个低调的人 (UID=48417)

    题目:

    CodeForces链接

    Luogu链接

    思路:

    这是一个一眼题

    我们不妨把所有的数都看做是(1)(取相应的花费,如:(6) 的花费就是(6 - 1 = 5), 拿变量(ans)记录)。

    如果这一个是负数,拿一个变量(negative)记录负数的数量。

    对于负数,当有偶数个的时候,把他们都变成(-1)是无所谓的,因为偶数个(-1)相乘的最终答案是(1),所以当有偶数个负数时答案为(ans - negative imes 2)(乘上(2)是因为(1)变成(-1)要两步)。

    但当有奇数个的时候,我们肯定选(negative-1)个负数改成(-1),不然最后乘积就是(-1)了。

    所以最终答案是(ans - [(negative - negative ~ mod ~ 2) imes 2])

    嗯~我们充满信心地交到评测姬上评测:

    嗯????(我头像)

    真是奇怪。为啥会WA?

    在我百思不得其解时,dalao告诉我我错误原因——有(0)的情况。

    当我们有奇数个负数,当有(0)时,把所有负数都可以变为(-1)

    因为(0)它变(1)还是变(-1),都是花费(1)块钱。因此,有奇数个负数并且有(0)时,就先把(ans-2)再作偶数个负数的情况。

    举个栗子(请大家自行手玩):

    0 5 -3 -6 -9

    我们原来的答案是:

    [egin{matrix}ans - [(negative - negative ~ mod ~ 2) imes 2]\ =26-[(3-3~mod~2) imes 2]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ =26-4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ =22~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~end{matrix} ]

    但实际上应该是(20)

    (请仔细阅读完再看代码)

    AC代码:

  • 相关阅读:
    rs485
    RS-232
    Delphi CRC算法, 不错
    Delphi Modbus RTU CRC16校验码
    如何使用Delphi编写Modbus RTU CRC16的校验码
    Delphi CRC算法crcexecute
    Delphi CRC32Verify控件
    Delphi CRC16校验算法实现(转)
    delphi crc校验函数
    JavaScript如何一次性展示几万条数据
  • 原文地址:https://www.cnblogs.com/GJY-JURUO/p/11391495.html
Copyright © 2011-2022 走看看