codeforces 558C 分类: codeforces ...


将每个数转成二进制的形式,可以发现对每个数的操作只会使二进制数中的 ‘1’减少,

而有效的目标状态一定不大于 max{a[i]}, 所以每个数能扩展出的有效状态只有 2*log max{a[i]} 种,而这个范围是非常小的。。。

可以用搜索处理出每个数能扩展出的有效状态以其代价。

最后枚举目标状态,更新答案即可。



#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <string>
#include <map>
#include <vector>
#include <stack>
#include <queue>
#include <utility>
#include <iostream>
#include <algorithm>

template<class Num>void read(Num &x)
{
    char c; int flag = 1;
    while((c = getchar()) < '0' || c > '9')
        if(c == '-') flag *= -1;
    x = c - '0';
    while((c = getchar()) >= '0' && c <= '9')
        x = (x<<3) + (x<<1) + (c-'0');
    x *= flag;
    return;
}
template<class Num>void write(Num x)
{
    if(x < 0) putchar('-'), x = -x;
    static char s[20];int sl = 0;
    while(x) s[sl++] = x%10 + '0',x /= 10;
    if(!sl) {putchar('0');return;}
    while(sl) putchar(s[--sl]);
}

const int maxn = 1e5 + 5, size = 1e5 + 5;
const int Nya = -1, INF = 0x3f3f3f3f;
#define REP(__i,__st,__ed) for(int __i = (__st); __i <= (__ed); i++)
#define update(x, y) x = std::min(x, y)

int a[maxn], maxa;
int cnt[size], cost[size];
int n, ans = INF;

std::queue<int> line;
std::vector<std::pair<int,int> > vis;

int find(int x) 
{
    for(int i = vis.size() - 1; i >= 0; i--)
        if(vis[i].first == x) return i;
    return Nya; 
}
void newrc(int t, int c)
{
    if(t > maxa) return;

    int pos = find(t);

    if(pos == Nya)
    {
        vis.push_back(std::make_pair(t, c));
        line.push(vis.size() - 1);
    }
    else
    {
        if(c < vis[pos].second)
        {
            vis[pos].second = c;
            line.push(pos);
        }
    }
}
void calcu(int f)
{
    vis.clear();

    vis.push_back(std::make_pair(f, 0));
    line.push(0);

    while(!line.empty())
    {
        int x = line.front();
        line.pop();

        newrc(vis[x].first << 1, vis[x].second + 1);
        newrc(vis[x].first >> 1, vis[x].second + 1);
    }

    REP(i, 0, vis.size() - 1)
    {
        cnt[vis[i].first] ++;
        cost[vis[i].first] += vis[i].second;
    }
}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("C.in","r",stdin);
    freopen("C.out","w",stdout);
#endif

    read(n);

    REP(i, 1, n) read(a[i]), maxa = std::max(maxa, a[i]);

    REP(i, 1, n) calcu(a[i]);

    REP(i, 0, maxa) if(cnt[i] == n) update(ans, cost[i]);

    write(ans);

#ifndef ONLINE_JUDGE
    fclose(stdin);
    fclose(stdout);
#endif
    return 0;       
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/dashgua/p/4722953.html

LoRaWAN协议-物理层(PHY)详解 目录 1 前言 2 物理层包格式 2.1 LoRa调制 2.2 FSK调制 2.3 LR-FHSS 3 Uplink 4 Downlink 1 前言 如图所示,LoRaWAN是一种开放式网络协议,可提供由LoRa联盟标准化和维护的安全双向通信,移动性和本地化服务。该协议做为MAC层,属于数据链路层。其物理层(PHY)实现与其他设备的通信,目前物理层支持LoRa,FSK,LR-FHSS调制。 下图的PHY只标准了LoRa调制,是因为LoRaWAN实际应用中基... 阅读详情

相关推荐

基于 Cognex VisionPro 的工业级图像匹配技术全解析

通过本文的深度解析,开发者可以系统掌握 Cognex VisionPro 图像匹配技术的核心原理、开发流程、优化策略及工业级应用。实际项目中,需结合具体场景灵活调整参数,综合运用预处理、特征提取和匹配算法,构建稳定可靠的视觉系统。

品质生活,极致编程。 1594

全世界最强的算法平台codeforces究竟有什么魅力?

大家好,之前说过由于和LeetCode结了梁子,所以周末的LeetCode专题取消了,给大家写点其他专题的算法问题。目前选择的是国外著名的编程竞赛平台——codeforces。它在竞赛圈名气比较大,对于普通大学生而言可能了解不多。所以今天这篇文章简单和大家介绍一下codeforces这个网站,以及它的使用方法。 链接:codeforces.com codeforces简介 简单介绍一下codeforces这个网站,codeforces位于宇宙编程最强的毛国。据说最早是由俄罗斯的一群大学生维护的,它最大的特点

TechFlow的博客 3万+

iperf3网络性能测试全攻略:从带宽到丢包率的实战技巧

本文提供了iperf3网络性能测试的完整实战指南,涵盖从基础部署到高级诊断的全流程。详细解析了TCP带宽测试的进阶技巧与UDP丢包率分析的深度方法,帮助网络工程师精准量化带宽、丢包率等关键指标,有效定位网络瓶颈并优化性能。

efc123456的博客 1018

‌编程竞赛平台Codeforces

Codeforces是一个综合性的编程竞赛和教育平台,适合各个层次的编程爱好者。无论是希望通过竞赛提升技能,还是利用其教育资源进行系统学习,Codeforces都能提供丰富的支持和机会。Codeforces的积分排名系统基于Elo积分系统,用于评估选手在竞赛中的实力和预测比赛结果。初始评级默认为1500,每场比赛后,选手的评级会根据赛前评级、赛后排名和比赛结果进行调整。预期排名(Seed):通过Elo公式计算每位选手的预期排名,即seed_i。

百态·数智思维 | 聚焦大数据、量化与未来AI 4459

到底什么是电源的斜波补偿,电源芯片CS引脚作用,一文讲清楚!

上文有提到电流环,其实电流环再细分也有很多模式,用的最多的是峰值电流模式峰值电流模式调节工作原理如下:(1)当输出负载增大时,输出电压降低,因此,Vc 增大,线性增加的电感电流只有升高到更大的值才能使 PWM 电流比较器翻转,开关管导通的时间增长,占空比增加,输入功率增加,因此输出电压增加,当输出电压增加到调节的范围内时,系统保持平衡。

jwgdhuwdhg的博客 1万+

Jetson Orin Nano@Ubuntu22.04:IMX219 CSI摄像头配置全流程与避坑指南

本文详细介绍了在Jetson Orin Nano@Ubuntu22.04系统上配置IMX219 CSI摄像头的全流程,包括硬件安装、驱动配置、常见问题排查及性能优化。特别强调了排线方向、驱动模式选择等关键细节,并提供了实用的命令和解决方案,帮助开发者高效完成摄像头部署与调试。

prometheus9mon的博客 318

Codeforces平台使用指南

常用插件 翻译插件:Codeforces Better! 首先安装油猴插件库:油猴(下载链接) 再安装Codeforces Better:Codeforces Better!(下载链接) 安装之后的界面 脚本的设置 点击右上角的蓝色按钮即可。 平台通识知识 团队功能

m0_73788381的博客 2418

一文读懂 CST 时/频域求解器

本文系统介绍了CST Studio Suite中的关键网格技术——六面体网格、四面体网格以及TLM求解器专用的八叉树非均匀网格技术。重点阐述了六面体网格的三项核心技术:理想边界拟合(PBA)技术可精确处理曲面边界,薄片技术(TST)能高效模拟薄层结构,自适应八叉树网格实现计算资源最优分配。同时详细对比了六面体网格与四面体网格的特点及适用场景,前者适用于系统级EMC/EMI分析等时域问题,后者擅长处理复杂曲面和异质材料的频域问题。

一只豌豆象的博客 461

探索高效编程神器:Codeforces - 竞技编程平台与代码库

探索高效编程神器:Codeforces - 竞技编程平台与代码库 去发现同类优质开源项目:https://gitcode.com/ 是一个全球知名的在线编程竞赛平台,也是开发者交流和分享代码的宝地。无论你是初学者,还是经验丰富的程序员,Codeforces 都能提供一个锻炼编程技能、提升算法理解、与全球顶尖开发者竞技的机会。 技术分析 Codeforces 的核心在于其比赛系统。该系统基于Web...

gitblog_00070的博客 7422

腾讯Android开发面试准备指南及参考答案

腾讯元宝高级Android开发职位面试准备指南 该职位要求扎实的Kotlin基础、架构设计能力和性能优化经验,重点关注Android客户端开发。面试流程约3轮,支持线上面试,流程较快。候选人需准备以下核心内容: 基础技术:Kotlin特性、Android开发生命周期、多线程编程 架构设计:MVVM/MVI模式应用、组件化解耦方案 性能优化:流畅度提升、内存管理、启动时间优化等实战案例 加分技能:Jetpack Compose开发、音视频处理、跨平台开发经验 建议结合项目经验准备具体案例,突出技术深度和问题解

郑伟强dev的专栏 1192

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1394

Codeforces使用指南

Codeforces(简称cf)可以说是目前全世界最大的算法练习和竞赛平台之一,无论是作为一名OIer,一名ACMer或者普通算法爱好者,cf都是我们练习的不二选择。

m0_73355263的博客 5万+

YOLOv8改进有效系列目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

Hello,各位读者们好,本专栏自开设两个月以来已经更新改进教程120+余篇其中包含C2f、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新,订阅本专栏以后你不仅可以收获跟专栏的阅读权限,同时可以进Qq群,里面包含集成我所有创新的YOLO最新目录,和我本人录制的视频讲解教程,如果你想要在YOLOv8系列收获一篇论文,我相信订阅本专栏后你一定会有所收获~YOLOv8改进有效系列目录。

Snu77的博客 18万+

Codeforces Round #558 (Div. 2)

目录 Codeforces Round #558 (Div. 2) 题解 A Eating Soup B Cat Party C Power Transmission D Mysterious Code E Magical Permutation ...

aozhuan8489的博客 212

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

CodeForces 558C Amr and Chemistry (位运算,数论,规律,枚举)

Codeforces 558C 题意:给n个数字,对每个数字可以进行两种操作:num*2与num/2(向下取整),求:让n个数相等最少需要操作多少次。 分析: 计算每个数的二进制公共前缀. 枚举法亦可。 /* *Author : Flint_x *Created Time : 2015-07-22 12:33:11 *File name : whust2_L.cpp */ #

a novice 1213

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C-CodeForces558C- Amr and Chemistry

题目链接:codeforces558C 位运算,加暴力,将每个数乘除所得数求出来,当所有数枚举到n,并且步数最小即可。 注意:   当a为奇数时,a除以2,再乘以2,得不到a,所以此时a向下遍历(除以2)时,所得数向上遍历会得到新的数,那么在a向下遍历时,若得到的数是奇数,则对该数进行一次向上遍历的操作。(该过程为代码中开始结束部分) #define _CRT_SECURE_NO_DEPR

caozhecs的博客 421

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CodeForces 558A,B

CodeForces 558A 题意:给定一些苹果树的位置和树上的苹果数,然后一个人站在原点,每次碰到苹果就往相反的方向走,问能得到的最大苹果数。 思路:直接模拟即可。先假设往左走,然后再假设往右走。遍历一遍即可。 code: #include #include #include #include #include #include #include #inc

坚持不懈 460

(CodeForces 558C) CodeForces 558C

题目链接:http://codeforces.com/problemset/problem/558/C 题意:给出n个数,让你通过下面两种操作,把它们转换为同一个数。求最少的操作数。 1.ai = ai*2 2.ai = ai/2,向下取整 思路: 可以除以二 或者 乘以二,就相当于位运算的右移和左移。用两个数组,vis 数组, cnt 数组。刚开始都初始化为0; vis[i] 表示 i...

weixin_30540691的博客 385

codeforces558C Amr and Chemistry

题目链接:http://codeforces.com/problemset/problem/558/C 题意: 给n个数, 可以每次对每个数乘2或除2(向下取整); 问最少用多少次可把n个数都变为相等。 分析: 由于n比较大,n^2就会超时;能过的只有O(n)orO(nlongn)算法。每次乘2除2又可以看成左移一位和右移一位,所以很容易想到在二进制下操作。但是做题的时候就想到了这, 之后

weishengmingerfendou的专栏 581

Codeforces Round #558 (Div. 2)题解

Codeforces Round #558 (Div. 2)题解 A. Eating Soup 水题,直接给出代码。 Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5 + 5; int n, m; int main() { ios::s...

dft539533的博客 174

A-codeforces558A

水题,第一次运行超时,用结构体快排。

caozhecs的博客 325

codeforces 558c&558d&558e

558c题意:给出若干数,可对数进行操作(乘2或者除以2)。求最少的操作使得所有的数都相等。以二进制的角度看这些数和操作,目标就是使得最后的二进制相等,也就是每个位置对应的数都相等,反观操作,乘上2相当于二进制左移动而且二进制中的1的个数不会减少,而除以2相当与二进制右移但是会造成二进制中的1的个数减少。。 那么,我们找出所有数的公共前缀,从第一个不为零的数开始。 如(001010)、5(101

wishcxz_acm 1351

Day 3 Codeforces Round #558 (Div. 2)(A,B1,B2,C1,C2)

Codeforces Round #558 (Div. 2) A: 思路:m个人离开后,还剩n-m个人,枚举1~(n-m),看补上m个人是否能连成环 代码: #include<bits/stdc++.h> using namespace std; const int maxn=1e3+9; priority_queue<int>q; int main(){ ...

Zookkk的博客 238

CodeForces 558C(位运算)

题目链接 : CodeForces 558C 题目大意 给你n个数,每个数 ai 可以做两种变换, ai = ai*2 ; ai = ai/2; 问最少经过多少次变换能使所有的数相同 例如 4 8 2 (8 -> 4 2 -> 4) 最少需要变换2次; 给个样例 5 4 4 (5 -> 2, 2->4) 也是最小需要两次; ...

weixin_30624825的博客 147

暴力 + 贪心 --- Codeforces 558C : Amr and Chemistry

C. Amr and Chemistry Problem's Link: http://codeforces.com/problemset/problem/558/C   Mean:  给出n个数,让你通过下面两种操作,把它们转换为同一个数。求最少的操作数。 1.ai = ai*2 2.ai = ai/2 (向下取整) analyse: 基本思路:首先枚举出每个数能够到达的数字

北岛知寒 383

Codeforces 558C Amr and Chemistry

Amr loves Chemistry, and specially doing experiments. He is preparing for a new interesting experiment.Amr has n different types of chemicals. Each chemical i has an initial volume of ai liters. For th

XDU_PYL的博客 898
上一篇: template 分类: templates ...
下一篇: poj 1568 分类: poj templa...
aa288288
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值