【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

处理出凑够2^j最少需要花费多少钱。
即试着把第i种物品买2^(j-i)个,看看会不会更便宜
记录在huafei[0..31]中
然后对于L;
把它转成二进制。累加二进制中对应为1的地方的对应huafei
(如果某个高位的1不加的话,肯定要用低位的来凑->但我们已经处理出来了最小的值了,肯定没有直接用huafei来的好->或者只能得到
(相同的价格。
作为初始答案。
但是可能不是这样老老实实地累加的。
因为可以超过。
则某个位置如果加了两次的话。就直接超过了。可以不用继续加了。
(不一定是为1的地方,为0的地方也可以加的

当然可能是更高位的直接只加了一个。

取最小值就好。

【代码】

#include <bits/stdc++.h>
#define ll long long
using namespace std; const int M = 32; ll huafei[M],L,c[M+10];
int n,a[M+10]; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
memset(huafei,255,sizeof huafei);
cin >> n >> L;
for (int i = 0;i <= n-1;i++) {
cin >> c[i];
huafei[i] = c[i];
} for (int i = 0;i <= n-1;i++){
ll cost = c[i];
for (int j = i+1;j <= M-1;j++){
cost*=2;//当前的花费
if (cost>=1e18+1) break;
if (huafei[j]==-1 || huafei[j]>cost) huafei[j] = cost;
}
} ll now = L;
int cnt = 0;
while (now>0){
cnt++;
a[cnt] = now&1;
now/=2;
} ll cost = 0;
for (int i = cnt;i >= 1;i--){
int ti = i-1;
if (a[i]){
cost += huafei[ti];
}
}
for (int i = cnt;i<M;i++)if (huafei[i]!=-1) cost = min(cost,huafei[i]);
ll temp = 0;
for (int i = cnt;i>=1;i--){
int ti = i-1;
if (a[i]){
temp+=huafei[ti];
}
cost = min(cost,temp+huafei[ti]);
}
cout << cost << endl;
return 0;
}

【Hello 2018 C】Party Lemonade的更多相关文章

  1. 【Hello 2018 D】Too Easy Problems

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以考虑把所有的题目按照ai排序. 然后顺序考虑最后做出来的题目个数和第i道题目的ai一样. 则1..i-1这些题目就没有用了. 值 ...

  2. 【Hello 2018 B】Christmas Spruce

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 写个dfs看看是不是每个节点都有3个叶子节点就可以了. [代码] #include <bits/stdc++.h> us ...

  3. 【Hello 2018 A】 Modular Exponentiation

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 当a<b的时候 a%b==a 显然2^n增长很快的. 当2^n>=1e8的时候,直接输出m就可以了 [代码] #incl ...

  4. 【CFD之道】2018年原创文章汇总

    以下是公众号CFD之道2018年的全部原创文章,共计210篇. 1 Fluent验证案例[60篇] Fluent验证案例02:通过均匀热通量管道层流流动 Fluent验证案例03:管道中湍流流动压降计 ...

  5. 【转载】2018 hosts 持续更新访问 gu歌【更新于:2018-05-03】

      修改HOSTS实现免费,简单访问谷歌的目的   也是比较稳定的方法.修改hosts.修改hosts的方法,原理在于直接存储谷歌网站的IP地址.这样就不用DNS来解析网址了.也就是说,当我们输入谷歌 ...

  6. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  7. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  8. 2018.07.17【省赛模拟】模拟B组 比赛总结

    题目 [GDKOI2003]最大公共子串 [题目描述] 从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩下的字符按原来的顺序组成的串是该串的字串.例如:"", &q ...

  9. 【作业4.0】HansBug的第四次面向对象课程思考

    嘛..不知不觉这门课程要结束了,那么就再说点啥以示庆祝呗. 测试vs正确性论证 说到这个,相比很多人对此其实很有疑惑,请让我慢慢分析. 逻辑概览 首先我们来看看两种方式各自的做法和流程是什么样的: 单 ...

随机推荐

  1. mysql 导出到 mongodb 与快速插入测试数据

    快速插入数据: 因为 MongoDB 的底层引擎是 JS 引擎,所以完全可以使用一些 Js 的语法.   for(var i=0;i<10000;i++){    db.ceshi.insert ...

  2. lsof---查看你进程开打的文件

    lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户 ...

  3. 【Codeforces Round #421 (Div. 2) B】Mister B and Angle in Polygon

    [题目链接]:http://codeforces.com/contest/820/problem/B [题意] 给你一个正n边形; 然后让你在这正n边行中选3个点,组成一个角; 找出角的大小和所给的角 ...

  4. CSU 1510 Happy Robot

    1510: Happy Robot Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 19  Solved: 7 Description Input The ...

  5. 洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair

    P1209 [USACO1.3]修理牛棚 Barn Repair 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. ...

  6. Retrofit请求数据对错误以及网络异常的处理

    http://blog.csdn.net/jdsjlzx/article/details/51566683

  7. DedeCMS列表页隔行/多行随意换色

    在很多列表调用的时候都需要有隔行换色或者多行不同颜色,特别在全通式的首页轮展图的时候,要想实现轮展图背景随着图片的更换,超过三张或多张的时候,隔行换色已经不能解决问题了,在原来的隔行换色的基础上,进行 ...

  8. express随笔

    Express 是node 第三方框架,框架的意义就在于能大大简化程序地开发.看一下Express是怎么简化node程序开发的. 1,用Express写一个hello world 程序,我们来体验一下 ...

  9. 【转】一篇关于32位Linux内核使用大内存的文章——Hugemem Kernel Explained  &nb

    红旗DC系列Linux操作系统(x86平台)中带有四类核心: UP (支持单内核) SMP (支持多内核) hugemem Icc* (用intel C编译器编译的核心) 其中hugemem核心往往引 ...

  10. vim中使用正則表達式

    一.使用正則表達式的命令 使用正則表達式的命令最常见的就是 / (搜索)命令. 其格式例如以下: /正則表達式 还有一个非常实用的命令就是 :s(替换)命令,将第一个//之间的正則表達式替换成第二个/ ...