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

【题意】

在这里输入题意

【题解】

处理出凑够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;
}

最新文章

  1. 说说APP接口中的版本控制
  2. ubuntu14安装Qt
  3. (笔记)angular Select选择
  4. UIwebView实现html的离线缓存
  5. Android新浪微博客户端(四)——添加多个账户及认证
  6. php读取memcache二进制数据
  7. C++ primer 练习 12.7
  8. Oracle 12C 新特性 - “可插拔数据库”功能
  9. 使用padding来合理布局自己的容器类
  10. php数组函数有哪些操作?php数组函数的应用
  11. Spark2.x学习笔记:Spark SQL的SQL
  12. SWIFT中计算两个日期间隔多少小时
  13. mongodb存储引擎
  14. caffe可视化模型
  15. Linux基础-yum软件包管理
  16. spin_lock &amp; mutex_lock的区别? 【转】
  17. VMTurbo:应对散乱虚拟机的强劲工具
  18. security权限控制
  19. [JSOI2018]军训列队
  20. python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

热门文章

  1. 洛谷1726 上白泽慧音 tarjan模板
  2. nl---统计行号
  3. mod_php模式原理探析
  4. caioj 1086 动态规划入门(非常规DP10:进攻策略)
  5. 洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair
  6. BEGINNING SHAREPOINT&amp;#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 JavaScript
  7. PHP经常使用功能
  8. modSecurity规则学习(八)——防止CC攻击
  9. thinkphp路由的作用
  10. 101.C++继承三种权限