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
*/


相关文章
ACM刷题之路(二十)线筛素数+找规律f(n) 2019暑期集训 HDU 2585
ACM刷题之路(二十)线筛素数+找规律f(n) 2019暑期集训 HDU 2585
|
7月前
|
人工智能 测试技术 C++
第十五届蓝桥杯模拟赛B组(第二期)C++
第十五届蓝桥杯模拟赛B组(第二期)C++
175 0
第十五届蓝桥杯模拟赛B组(第二期)C++
|
7月前
|
Python
湖南大学第十六届程序设计竞赛(重现赛)补题题解(更新中)
湖南大学第十六届程序设计竞赛(重现赛)补题题解(更新中)
40 0
|
BI C++
【校园微项目竞赛】没勇气参赛?大一拿不到奖?这篇文章将讲述我带领我们组拿下校第一的生猪系统!
【校园微项目竞赛】没勇气参赛?大一拿不到奖?这篇文章将讲述我带领我们组拿下校第一的生猪系统!
72 0
|
存储 人工智能 测试技术
十四届蓝桥杯模拟赛第三期(二)
十四届蓝桥杯模拟赛第三期
140 0
|
算法
十四届蓝桥杯模拟赛第三期(一)
十四届蓝桥杯模拟赛第三期
448 0
第14届蓝桥杯模拟赛 第2期
请找到一个大于 2022 的最小数,这个数转换成二进制之后,最低的 6 个二进制为全为 0 。请将这个数的十进制形式作为答案提交。
Contest1041 - 2018年软件学院程序设计大赛(高年级组)重现赛
Contest1041 - 2018年软件学院程序设计大赛(高年级组)重现赛
|
人工智能 iOS开发 Windows
(待补充)小蒟蒻的刷题成长之路-------中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
(待补充)小蒟蒻的刷题成长之路-------中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
138 0
|
算法 程序员 测试技术
【算法集训 | 暑期刷题营】8.1题---线性dp
【算法集训 | 暑期刷题营】8.1题---线性dp
【算法集训 | 暑期刷题营】8.1题---线性dp