题意:

广藿香正在制作一个神奇的护身符。 她最初有 n 个魔法令牌。 它们的魔力可以用正整数a1,a2,…,an来表示。 广藿香可以对令牌执行以下两种操作。 融合:广藿香选择两个标记,移除它们,并创造一个新的标记,其魔力等于两个所选标记之和。 减少:广藿香选择一个具有偶数魔法力量 x 值的令牌,将其移除并创建一个具有等于 x2 魔法力量的新令牌。 当它们的魔力是奇数时,令牌会更有效。 请帮助广藿香找出她需要的最少操作次数,以使所有代币的魔力为奇数。

思路:

操作+贪心

目的是要操作次数最少,贡献是操作次数。观察可知减少一个偶数融合操作最多操作一次,而减少操作最少操作两次,因此我们极端化的想,让融合操作尽可能多。然而还有其他的一些约束条件:只有当奇数+偶数时结果才为奇,因此融合操作只有当数组内存在奇数时才能操作,因此如果数组中存在奇数,那么总操作数就是偶数的个数。如果数组中全是偶数,那么只能进行减少操作。操作次数就是不断将该数除2,直到该数为奇数为止,因此减少操作的操作次数与bit有关。我们只需找出除2除到奇数的最少操作的那个偶数,然后贡献就是除法操作数+偶数个数-1。

一开始WA了一发,因为以为数越小,除法的操作就越少,但事实上并不是这样

Code:

#include <bits/stdc++.h>
using namespace std;
const int mxn=2e5+10,mnf=0x3f3f3f3f;
#define int long long
int n,ok=0,cnt=0,cnt2=0,ans=0,mi=mnf;
int a[mxn];
void solve(){ok=0;cnt=0;cnt2=0;ans=0;mi=mnf;scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);if(a[i]%2==0) cnt++;else ok=1;}//sort(a+1,a+1+n);if(ok) {printf("%lld\n",cnt);return;}else{for(int i=1;i<=n;i++){cnt2=0;while(a[i]%2==0){a[i]>>=1;cnt2++;}mi=min(mi,cnt2);}}ans=cnt-1+mi;printf("%lld\n",ans);
}
signed main(){int T;scanf("%lld",&T);while(T--) solve();return 0;
}

Codeforces Round #796 (Div. 2) B Patchouli‘s Magical Talisman相关推荐

  1. Codeforces Round #796 (Div. 2)

    目录 A. Cirno's Perfect Bitmasks Classroom B. Patchouli's Magical Talisman C. Manipulating History D. ...

  2. Codeforces Round #297 (Div. 2)E. Anya and Cubes 折半搜索

    Codeforces Round #297 (Div. 2)E. Anya and Cubes Time Limit: 2 Sec  Memory Limit: 512 MB Submit: xxx  ...

  3. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  4. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  5. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  6. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  7. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  8. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  9. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

最新文章

  1. HDU1261(高精度乘法+高精度除法)
  2. pandas计算滑动窗口中的数值总和实战(Rolling Sum of a Pandas Column):计算单数据列滑动窗口中的数值总和(sum)、计算多数据列滑动窗口中的数值总和(sum)
  3. hibernate查询-基本查询
  4. linux多线程求和_谈一谈C++中的多线程(上)
  5. 2015.5.21 Core Java Volume 1
  6. 支持XML的公司和它们的开发工具有哪些?
  7. ONLY三行脚本, SQL数据恢复到指定时间点
  8. IoT---(1) 窄带物联网NB-IoT协议必须要了解的几个问题
  9. 吴恩达机器学习笔记3——线性代数
  10. 【电力电子】【2020.02】利用导抗式三相双有源桥DC-DC变换器实现宽范围高效率的拓扑结构和调制方案
  11. 信号与系统实验五 信号的傅里叶分析与频谱
  12. 复制整个文件夹下的文件(无限递归复制子文件夹)
  13. windows 命令行代理设置
  14. 2021包膜机十大品牌排行榜
  15. please select a valid python interpreter(请选择一个解释器)
  16. lmp+heartbeat+drbd
  17. Windows应用商店0x80131500错误
  18. pip 如何设置代理
  19. SpringBoot配置Mybatis-Plus应用
  20. 软件工程考研笔记整理(三小时速成)(3)

热门文章

  1. 揭秘!一个无线电黑客的玩具
  2. python调用百度AI接口实现人像分割
  3. 白酒知识丨酱香型白酒为何瓶子不透明?
  4. 43 备忘录模式(详解版)
  5. jQuery实现购物车
  6. 一步一步搭建一个图片上传网站(后台服务器用nodejs)
  7. CodeForces - 764B Timofey and cubes
  8. 楼宇控制服务器显示FT,【产品介绍】楼宇智控系统
  9. 爬虫终于找到了知乎/B站 Top100大V,关注!
  10. 微透镜阵列的主要应用_阵列的应用