2021浙江工业大学程序设计迎新赛决赛(重现赛)----MS 与美食街 2

简介: 算法

飞机票


题意:

14.png

思路:


可以把所有的次幂看成进制数,然后可以用二进制模拟一下,比如

2^3= 2^2+ 2^2 , 2^4 = 2^3 + 2^3 以此推下去,所以我要求一个最大值的最小值能够买下所有东西,就是他们所有的和都要小于这个数,那么我只需要找到一个最高次幂即可,当然这题没有那么简单,他要找的数是比所有数的和还要大的

那么如何求和呢?看到数的大小很明显无法求和,只能用进制的关系也就是上面推的公式,只要某个幂次出现的次数大于a,即可转换成当前幂次+1,就完成了进位也完成了求和

最后注意还有两个坑点,如果最高次幂只有他本身,那么就直接输出最高次幂即可,但如果最高次幂出现的次数大于一次或者有比他小的幂次出现过,那么就得输出最高次幂+1了

#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
using namespace std;
const int maxn=55;
int b[maxn];
int main()
{
    int n,i,j,a,k;
    cin>>n>>a;
    map<int,int >mo;
    for(i=0; i<n; i++)
    {
        cin>>b[i];
        mo[b[i]]++;
    }
    while(1)
    {
        int f1=0;
        for(auto it=mo.begin(); it!=mo.end(); ++it)
        {
            if(it->second>=a)
            {
                int x=it->second/a;
                it->second-=x*a;
                int y=it->first+1;
                mo[y]+=x;
                f1=1;
            }
        }
        if(f1==0) break;
    }
    int max1=0,flag=0;
    for(auto it=mo.begin(); it!=mo.end(); ++it)
    {
        if(it->second!=0)
        max1=max(it->first,max1);
        //cout<<it->first<<" "<<it->second<<endl;
    }
    for(auto it=mo.begin(); it!=mo.end(); ++it)
    {
        if(it->second!=0&&it->first!=max1)
            flag=1;
        if(it->second>1&&it->first==max1)
            flag=1;
    }
    cout<<max1+flag<<endl;
    return 0;
}
/*
3 10
1 1 1
1
*/


相关文章
|
2月前
|
设计模式 算法 安全
2023下半年软件设计师 关于我用了半个月过了软件设计师这件事
这篇文章分享了作者在仅用半个月的业余时间备考并通过2023下半年软件设计师考试的经历,包括备考策略、所用资料和个人建议,同时提供了相关备考资料的获取方式。
|
5月前
|
人工智能 测试技术 C++
第十五届蓝桥杯模拟赛B组(第二期)C++
第十五届蓝桥杯模拟赛B组(第二期)C++
132 0
第十五届蓝桥杯模拟赛B组(第二期)C++
|
5月前
|
Python
湖南大学第十六届程序设计竞赛(重现赛)补题题解(更新中)
湖南大学第十六届程序设计竞赛(重现赛)补题题解(更新中)
27 0
|
BI C++
【校园微项目竞赛】没勇气参赛?大一拿不到奖?这篇文章将讲述我带领我们组拿下校第一的生猪系统!
【校园微项目竞赛】没勇气参赛?大一拿不到奖?这篇文章将讲述我带领我们组拿下校第一的生猪系统!
65 0
Contest1041 - 2018年软件学院程序设计大赛(高年级组)重现赛
Contest1041 - 2018年软件学院程序设计大赛(高年级组)重现赛
|
人工智能 iOS开发 Windows
(待补充)小蒟蒻的刷题成长之路-------中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
(待补充)小蒟蒻的刷题成长之路-------中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
129 0
|
算法
团体程序设计天梯赛-模拟赛(下)
团体程序设计天梯赛-模拟赛(下)
459 0
团体程序设计天梯赛-模拟赛(下)
|
机器学习/深度学习 程序员 Python
团体程序设计天梯赛-模拟赛(上)
团体程序设计天梯赛-模拟赛
692 0
团体程序设计天梯赛-模拟赛(上)
单片机比赛准备06-蓝桥杯-第四届初赛模拟题(自动售水机)
单片机比赛准备06-蓝桥杯-第四届初赛模拟题(自动售水机)
140 0
单片机比赛准备06-蓝桥杯-第四届初赛模拟题(自动售水机)
|
算法
每日一题冲刺大厂第十三天提高组 第46届ICPC 东亚区域赛 A题
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题提高组是为了有余力的同学准备的,让大家练到各种各样的题目,一年以后,蜕变成为一个不一样的自己!
122 0