博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 558C Amr and Chemistry (位运算,数论,规律,枚举)
阅读量:6702 次
发布时间:2019-06-25

本文共 1533 字,大约阅读时间需要 5 分钟。

题意:给n个数字,对每一个数字能够进行两种操作:num*2与num/2(向下取整),求:让n个数相等最少须要操作多少次。

分析:

计算每一个数的二进制公共前缀.

枚举法亦可。

/**Author : Flint_x *Created Time : 2015-07-22 12:33:11 *File name : whust2_L.cpp */#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 2139062143using namespace std;const double eps(1e-8);typedef long long lint;#define cls(a) memset(a,0,sizeof(a))#define rise(i,a,b) for(int i = a ; i <= b ; i++)#define fall(i,a,b) for(int i = a ; i >= b ; i--)const int maxn = 100000 + 5;int num[maxn];int temp[maxn];int odd[maxn],cnt[maxn];int n;int main(){ // freopen("input.txt","r",stdin);// freopen("output.txt","w",stdout); while(cin >> n){ for(int i = 1 ; i <= n ; i++){ scanf("%d",&num[i]); } cls(cnt);cls(odd); sort(num+1,num+n+1); for(int i = 1 ; i <= n ; i++) temp[i] = num[i]; int t = num[1]; for(int i = 1 ; i <= n ; i++){ while(t ^ num[i]){ if (t < num[i]) num[i] >>= 1; else t >>= 1; } } for(int i = 1 ; i <= n ; i++) num[i] = temp[i]; for(int i = 1 ; i <= n ; i++){ while (num[i] ^ t){ cnt[i]--; if(num[i] % 2) odd[i] = cnt[i]; num[i] >>= 1; } } lint ans = inf; for(int i = 0 ; i < 20 ; i++){ lint x = 0; for(int j = 1 ; j <= n ; j++){ if (odd[j] == 0 || cnt[j] + i <= odd[j]) x += abs(cnt[j] + i); else x += abs(odd[j]) + abs(odd[j] - (cnt[j] + i)); }// cout << x << endl; ans = min(ans,x); } cout << ans << endl; } return 0;}

转载地址:http://nagoo.baihongyu.com/

你可能感兴趣的文章
laravel框架——composer导入laravel
查看>>
c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
查看>>
MyEclipse/Eclipse 中使用javap
查看>>
docker registry v2与harbor的搭建
查看>>
求二叉树的高度
查看>>
TCP三次握手及四次挥手详细图解(转)
查看>>
数据结构02-链表
查看>>
UWP学习记录
查看>>
Matrix Computations 1
查看>>
C#中几种数据库的大数据批量插入
查看>>
[flask]gunicorn配置文件
查看>>
牵丝戏
查看>>
OC-封装、继承、多态
查看>>
改需求
查看>>
linq中let关键字学习
查看>>
Java并发编程(多线程)中的相关概念
查看>>
6-14 数据库高级
查看>>
[QNAP crontab 定時執行程式
查看>>
listView当中有嵌套了有onClickListener的控件时ListView自身的onItemClick无响应的解决方案...
查看>>
本地浏览器缓存sessionStorage(临时存储) localStorage(长期存储)的使用
查看>>