2018年中南大学机试题D题_每组测试用例中第一行包含两个数字和,其中为数列长度,为要计算的递增子序列长度。-程序员宅基地

技术标签: 算法  面试  c语言  贪心算法  2018中南大学机试题  

2018年中南大学机试题D题

题目链接
2018年中南大学机试题讲解链接

题目描述

猪年快乐!在这个快乐的日子里我们当然要去超市买可乐喝啦!
现在超市有n种可乐,第 i 种可乐的价格为C[i] ,体积为 2i-1 毫升,每种可乐都是无限供应的 ,现在你想买至少 L毫升的可乐 ,作为一个省钱小能手,聪明的你能够想到最少要花多少钱吗?

输入

输入包含多组测试用例。
每组测试用例第一行包含两个数字 n 和 L (1 ≤ n ≤ 30; 1 ≤ L ≤ 109) , n是可乐的种类数, L是我们最终要买的可乐体积。
第二行包含 n 个数字 C1,C2,…Cn n (1 ≤ ci ≤ 109) ,代表每一种可乐的价格。

输出

输出一个数字 , 购买至少L毫升的可乐需要的最少花费。

样例输入

4 12
20 30 70 90
4 3
10000 1000 100 10
4 3
10 100 1000 10000

样例输出

150
10
30

题目思路

这道题第一眼看上去有点像完全背包问题,仔细思考之后就会发现还是有不同的地方,背包问题的背包空间大小是确定的。但是这道题没有说不可以多买可乐,求至少购买L毫升,也可以比L毫升多也行。这题是用贪心去做。肯定是买物美价廉的东西。先把每种可乐的每毫升单价算出来,一开始就买单价小的买,如果需要购买的可乐体积比这种可乐的体积小。这有两种情况可以选择,一是选择直接再买一瓶这种可乐,多了体积也没关系只要价钱低就好,第二种在剩下可乐中购买剩下体积的可乐,那种方法的钱少就用那种方法。(这题要用long long去做,用int会溢出)

上代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long  L, V[32], cost[32];
int n;
int vis[32];
int in[32];
double c[32];
bool cmp(int  a, int b)
{
    if(c[a] < c[b]) return true;
    else            return false;
}
long long tanxin(long long l)
{
    long long an, tem;
    for(int i = 0; i < n; i++)
    {
        if(vis[in[i]])
        {
            continue;
        }

        if(l % V[in[i]] == 0)
        {
            an = (l / V[in[i]]) * cost[in[i]];
            return an;
        }
        else
        {
            an = (l / V[in[i]]) * cost[in[i]];
            vis[in[i]] = 1;
            tem = tanxin(l - (l / V[in[i]]) * V[in[i]]);
            if( tem  > cost[in[i]] )
                an = an + cost[in[i]];
            else
                an = an + tem;
            return an;
        }
    }
}
int main()
{
    V[0] = 1;
    for(int i = 1; i < 32; i++)
        V[i] = V[i-1]*2;
    while(scanf("%d %lld", &n, &L) != EOF)
    {
        for(int i = 0; i < n; i++)
        {
            scanf("%lld", &cost[i]);
            c[i] = cost[i]*1.0/V[i];
            in[i] = i;
        }
        sort(in, in+n, cmp);
        memset(vis, 0, sizeof(vis));
        printf("%lld\n", tanxin(L));

    }
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mrs_Jiangmengxia/article/details/104949531

智能推荐

深度学习技术发展趋势浅析_深度学习方法、模型的发展趋势-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏52次。https://mp.weixin.qq.com/s/FtIhKiENv483iHE053RPkg当前,人工智能发展借助深度学习技术突破得到了全面关注和助力推动,各国政府高度重视、资本热潮仍在加码,各界对其成为发展热点也达成了共识。本文旨在分析深度学习技术现状,研判深度学习发展趋势,并针对我国的技术水平提出发展建议。一、深度学习技术现状深度学习是本轮人工智能爆发的关键技术。..._深度学习方法、模型的发展趋势

python dict 选择第一个、最后一个元素的key或value_python dict 取第一个值-程序员宅基地

文章浏览阅读1.7w次,点赞8次,收藏17次。比如字典:my_dict = { "first_key": 'first_value', "second_key": "second_value", "third_key": "third_value",}如果使用:print(my_dict.keys()[0])print(my_dict.values()[0])这会导致报错:TypeError: 'dict_keys' object is not subscriptableTypeError: 'dict_va_python dict 取第一个值

重学pandas(一)之读取数据DataFram的简单使用_panda datafram-程序员宅基地

文章浏览阅读2.4k次。文章目录前言案例解读读取数据文本文件excel文件数据库jsonDataFrame构造根据字典根据numpy构造根据列表构造属性方法四则运算转换前言工作了一段时间,天天写sql,玩linux上的脚本;已经快忘记python怎么写了,pandas忘记的更是干净,便打算写一写博客来复习一下pandas的API。案例解读读取数据文本文件 ''' Flat file 平面文件->文..._panda datafram

Centos7安装bcm43142无线网卡驱动 采用rpmbuild方法-程序员宅基地

文章浏览阅读223次。一 安装依赖和环境 1 安装依赖(第二个如果找不到包可以不装)# yum group install 'Development Tools'# yum install redhat-lsb kernel-abi-whitelists# yum install kernel-devel-$(uname -r) 2 建立rpmbuild环境(注意不要使用root账..._centos7 43142网卡驱动

Android开发本地及网络Mp3音乐播放器(四)实现音乐播放_android.net.uri 设置网络歌曲-程序员宅基地

文章浏览阅读4.8k次。建立PlayService服务package com.iwanghang.drmplayer;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.net.Uri;import android.os.Binder;impo_android.net.uri 设置网络歌曲

VMware打不开文件“xxx\.xxx.vmkd”,系统找不到指定的文件-----最佳解决方案_找不到windows server 2012 r2 datacenter-cl1-000001.vm-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏7次。突如其来的错误花费了些时间搭建的VMware渗透测试主机,今天打开突然出现了这个情况!!error:打不开文件“D:\testwin10\Windows 10渗透-000002.vmdk”: 系统找不到指定的文件。如下图所示网上找了很多的方案但是并没能正确的解决。问题所在根据提示是文件出现了问题。可以看到是我这里少了一个文件导致的这个问题。毕竟这是用来做安全的一台虚机,所以我猜测应该是被Windows Defender给删除了,然而我一开始并没有发现并且彻底删除了这个文件。。。。。所以如_找不到windows server 2012 r2 datacenter-cl1-000001.vmkd文件怎么办

随便推点

串口测试(本地回环)_ttys5-程序员宅基地

文章浏览阅读1.6k次。不借助应用程序,使用系统命令,进行串口功能测试_ttys5

web期末作业网页设计(网页源码)大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS_大学生web网页设计实例-程序员宅基地

文章浏览阅读928次,点赞15次,收藏26次。文章目录web前端期末大作业 (1500套) 集合一、网页介绍二、网页集合三、作品演示A电影主题B漫画主题C商城主题D家乡主题E旅游主题F餐饮/美食主题G环境主题H游戏主题I 个人主题K体育主题L博客主题M汽车主题N文化主题P美妆主题Q企业主题R教育主题S其他主题更多源码web前端期末大作业 (1500套) 集合临近期末,大一新生的各种考试和专业结课作业纷至沓来。web实训大作业、网页期末作业、web课程与设计、网页设计等,简直让人头大。你还在为网页设计老师的作业要求感到头大?网页作业无从下手?_大学生web网页设计实例

Linux中安装配置arm-2009q3方法(实用例子)_bash: /home/ubuntu/cross-tool/arm-2009q3/bin/arm-n-程序员宅基地

文章浏览阅读1k次。原文出自:https://blog.csdn.net/weixin_41182157/article/details/83041109感谢网友的分享!!!linux中装软件的特点linux中安装软件比windows中复杂。linux中安装软件一般有以下几种方法:第一种:在线安装。譬如ubuntu中使用apt-get install vim来安装vim软件。第二种:自己下载安装包来安装。这..._bash: /home/ubuntu/cross-tool/arm-2009q3/bin/arm-none-linux-gnueabi-gcc-4.4.

删除Maven无效依赖_maven删除无用依赖-程序员宅基地

文章浏览阅读900次。当我们进行开发的时候,总会后把依赖的名字写错的情况,但是maven依旧尝试去下载,但是这个下载下来的依赖无法使用,并且有些时候进行开发的时候还会对程序造成一定的影响,所以我们需要删除这些无效的依赖。这是我的配置,我的maven仓库在D:\APP\maven3.8.8\maven_repository下。可以通过以下代码一键删除,将此内容复制到文本文件,然后将后缀名改为.bat,保存后双击该文件。如果一个文件一个文件的找,那么太花费时间,而且还不一定能全部找出来。_maven删除无用依赖

慕课网CSS(2)_慕课网css背景和列表2-6-程序员宅基地

文章浏览阅读175次。选择器{ 样式; }标签选择器:html代码中的标签类选择器:类选器名称{ css样式代码 } 使用方法:1.<span>小米</span> 2.<span class= "stress">小米</span> 3. <style> .str..._慕课网css背景和列表2-6

无需任何下载工具就可以下载英雄联盟LOL英雄时刻系统剪辑好的视频爬虫网页分析基础_英雄时刻我为什么录制好了 然后结束视频怎么就剩下十几秒是怎么回事-程序员宅基地

文章浏览阅读1.6k次。-------下面的文字只是记录一下想法,想看答案的可以忽略所有文字,直接按照下面图片上的步骤去操作-------------闲暇时间会玩一玩游戏,比如LOL,一来可以歇歇脑,让本就不多的头发得以延长寿命,二来还可以体验一下不一样的世界。虽然不是什么大手子,但是偶尔也会有狂拽炫酷吊炸天的时刻,这时候总希望把这些精彩时刻保存下来,分享出去,LOL为了满足玩家的需求增加了这个功能,本来是很好的事,但..._英雄时刻我为什么录制好了 然后结束视频怎么就剩下十几秒是怎么回事

推荐文章

热门文章

相关标签