cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】
生活随笔
收集整理的這篇文章主要介紹了
cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分析
給出一堆數
可以通過相加或除2讓它們全部變成奇數
如果全奇數返回0
由于奇數 + 偶數 = 奇數
所以只要有一個奇數就能把偶數和它相加不停的變成奇數
所以只要存在奇數,就可以返回偶數的個數
否則,全部偶數的話,我們先找到這些偶數中通過/2能最快得到奇數的數,假設要min_log2次
然后再對剩下的n - 1個偶數相加即可
ac code
import math for _ in range(int(input())):n = int(input())a = list(map(int, input().split()))even_nums = 0min_log2 = math.inffor num in a:if num % 2 == 0:even_nums += 1cnt = 0while num % 2 == 0:cnt += 1num //= 2min_log2 = min(min_log2, cnt)if even_nums == 0:print(0)continue# 不全是偶數# 每次加存在的奇數即可(對每個偶數)if n - even_nums != 0:print(even_nums)# 用最少的步數變一個奇數出來# 然后把這個奇數和剩下的n - 1個偶數相加else:print(min_log2 + even_nums - 1)總結
奇偶分析
貪心思維
總結
以上是生活随笔為你收集整理的cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux+gps测试流程图,GPS测试
- 下一篇: Xilinx FFT IP使用总结