传送门

二进制分组优化背包
理解的差不多了,但是无法具体阐述,留坑
代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
void read(int &x) {char ch; bool ok;for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=1010;
vector<int>a[50],b[50];
int n,m,f[50][maxn],w[maxn],len;
int main()
{while(1){memset(f,0,sizeof f);memset(a,0,sizeof a);memset(b,0,sizeof b);memset(w,0,sizeof w);read(n),read(m);len=0;if(n==-1)return 0;for(rg int i=1,j=0,x,y;i<=n;i++,j=0){read(x),read(y);while(!(x&1))x>>=1,j++;a[j].push_back(x),w[j]+=x,len=max(len,j),b[j].push_back(y);}for(rg int i=0;i<=len;i++){int t=a[i].size();for(int j=0;j<t;j++)for(rg int k=w[i];k>=a[i][j];k--)f[i][k]=max(f[i][k],f[i][k-a[i][j]]+b[i][j]);}while(m>>len)len++;len--;for(rg int i=1;i<=len;i++){w[i]+=(w[i-1]+1)/2;for(rg int j=w[i];j>=0;j--)for(rg int k=0;k<=j;k++)f[i][j]=max(f[i][j],f[i][j-k]+f[i-1][min(w[i-1],(k<<1)|(m>>(i-1)&1))]);}printf("%d\n",f[len][1]);}
}

转载于:https://www.cnblogs.com/lcxer/p/10492213.html

bzoj1190:[HNOI2007]梦幻岛宝珠相关推荐

  1. bzoj1190 [HNOI2007]梦幻岛宝珠 动态规划

    给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值.数据范围:N<=100;W<=2^30,并且保证每颗宝石的重量符 ...

  2. BZOJ.1190.[HNOI2007]梦幻岛宝珠(分层背包DP)

    题目链接 把重量表示为\(a\times2^b\)的形式,然后按\(b\)排序. 从高到低枚举每一位,\(f[i]\)表示当前位容量为\(i\)时的最大价值(容量即\(a\times2^{bit}\) ...

  3. 1190: [HNOI2007]梦幻岛宝珠 - BZOJ

    Description 给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值. 数据范围:N<=100;W<=2^30 ...

  4. BZOJ 1190: [HNOI2007]梦幻岛宝珠

    好难的分层DP TAT 把WTY大爷的话读了好几遍,并不是很懂(然后就把代码抄了一遍) 话说这代码跑得略慢了....... #include<iostream> #include<c ...

  5. bzoj1190梦幻岛宝珠

    Description 给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值.数据范围:N<=100;W<=2^30, ...

  6. P3188-[HNOI2007]梦幻岛宝珠【背包】

    正题 题目链接:https://www.luogu.com.cn/problem/P3188 题目大意 nnn个物品,大小为WWW的背包. 每个物品的大小可以表示为wi=ai2biw_i=a_i2^{ ...

  7. 2019.5.summary

    2019.5.1 CF C. Prefix Sum Primes 感觉CF就是训练妳如何养成对题目强大的YY能力的QAQ 我们构造 如果只有一种,没辙,只能这样放 否则先放一个2,再放一个1 接下来把 ...

  8. [大山中学模拟赛] 2016.9.10

    liao出了一场比赛 简直想吃狗屎 说好的noip难度?我操 因为有四道题 我简单的提一下就好了 [HNOI2007]梦幻岛宝珠 这一题liao也没说怎么想到这种dp的 吃屎吧 F[i][j]表示2^ ...

  9. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

最新文章

  1. Django博客系统注册(图形验证码接口设计和定义)
  2. Tensorflow2.0(Keras)转换TFlite
  3. IP协议详解---Linux学习笔记
  4. 用Emacs编写mybatis
  5. 01 | 基础架构:一条SQL查询语句是如何执行的?笔记(转)
  6. python tuple类型和list_Python 入门(四)List和Tuple类型
  7. (20)Verilog HDL并行块:fork-join
  8. python音频特征提取_使用Python对音频进行特征提取
  9. Cannot find class [***] for bean with name '***' defined in file[***]
  10. VASP四大输入文件——KPOINTS
  11. linux蓝牙遥控,蓝牙遥控器连接流程分析
  12. SQL开发技巧-MySQL
  13. 转换uptime_王者荣耀角色转换什么时候正式上线_王者荣耀角色转换上线时间-超分手游网...
  14. 机器人编程教育培养孩子综合能力
  15. PhaserTape:把智能手机变成测距仪
  16. redies 须知小结
  17. 华硕笔记本能通用的BIOS型号
  18. java错误 找不到或无法加载主类_JAVA报找不到或无法加载主类的错误
  19. GPS北斗时钟服务器(NTP网络时钟系统)施工部署方案
  20. 全球及中国中药行业发展机遇及投资价值评估报告2021-2027年

热门文章

  1. 配置文件*.xml中 classpath: 与 classpath*: 的区别
  2. javascript this指针指向?
  3. 转 ABAP_ALV_Function方式与OO方式(较为简单、普通的ALV)
  4. IIS错误与解决方法
  5. ArcGis开发过程中遇到HRESULT:0x80040213错误
  6. vue --- 2.0响应式补充
  7. 第七章:XAML vs. code(3)
  8. vue刷新当前路由:router-view 复用组件时不刷新的3种解决方案总结
  9. Datalore:用于机器学习可视化的新Web方案!
  10. c++ 11 override final