题目大意

给定n个数以及k,要求将n个数去掉k个,剩下的值or起来最大。

n≤100000 k≤100 每个数是不大于100000的正整数

分析

假设所有数中总共sum个二进制位出现过1,那么当n-k≥sum时,每个1都一定可以出现。

当n-k < sum时,n最大只有116,可以设f[i][j]表示前i个数,or和为j最多可以去掉多少个数,转移很简单。

#include <cstdio>
#include <cstring>
#include <algorithm>#define max(a,b) ((a)>(b)?(a):(b))using namespace std;const int T=131072;typedef long long LL;int n,k,ans,m,f[120][T],cnt,a[T];bool bz[20];char c;int read()
{int x=0,sig=1;for (c=getchar();c<'0' || c>'9';c=getchar()) if (c=='-') sig=-1;for (;c>='0' && c<='9';c=getchar()) x=x*10+c-48;return x*sig;
}int main()
{n=read(); k=read();for (int i=1;i<=n;i++){a[i]=read();for (int j=0;j<17;j++) if ((a[i]&(1<<j))>0) bz[j]=1;}for (int i=0;i<17;i++) if (bz[i]) cnt++,ans|=(1<<i);if (n-k>=cnt){printf("%d\n",ans); return 0;}for (int i=0;i<=n;i++) for (int j=0;j<T;j++) f[i][j]=-n;f[0][0]=0;for (int i=1;i<=n;i++){for (int j=0;j<T;j++){f[i][j]=max(f[i][j],f[i-1][j]+1); f[i][j|a[i]]=max(f[i][j|a[i]],f[i-1][j]);}}for (int i=1;i<T;i++) if (f[n][i]>=k) ans=i;printf("%d\n",ans);return 0;
}

[bzoj4976]宝石镶嵌相关推荐

  1. bzoj4976宝石镶嵌 DP

    Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,-,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升 法杖的威力.不幸的是,小Q的法杖上宝石镶嵌栏太少了,他必须扔掉 ...

  2. BZOJ4976 宝石镶嵌(动态规划)

    显然被留下的宝石应该贡献至少一位,否则就可以扔掉.所以如果n-k>=logw,直接输出所有数的or.现在n变得和k同阶了.于是设f[i][j]为前i个数or为j时至少选几个数,转移显然.当然可以 ...

  3. bzoj4976 宝石镶嵌

    题目 如果没有k的限制的话,显然全部或起来最大啦. 再想,k多小啊,如果n>=k+20,能有的都可以有,全部或起来就最大啦. 不然,就简单dp一下. #include<bits/stdc+ ...

  4. 【BZOJ4976】宝石镶嵌 DP

    [BZOJ4976]宝石镶嵌 Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,...,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升法杖的威力.不幸的是,小Q的法 ...

  5. BZOJ4976: [Lydsy1708月赛]宝石镶嵌

    BZOJ4976: [Lydsy1708月赛]宝石镶嵌 https://lydsy.com/JudgeOnline/problem.php?id=4976 分析: 本来是从\(k\le 100\)这里 ...

  6. [bzoj4976][dp]宝石镶嵌

    Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,...,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升 法杖的威力.不幸的是,小Q的法杖上宝石镶嵌栏太少了,他必须 ...

  7. 【bzoj4976】宝石镶嵌(思维dp)

    题目传送门:bzoj4976 不得不说这是道脑洞dp,思路真的清奇. 我们可以发现,虽然n很大,但是k只有100,这里面似乎隐藏了什么玄机. 我们可以发现,设总共有$ tot $个二进制位在这n个数中 ...

  8. 【bzoj4976】宝石镶嵌

    题解: 比较水 注意k<=100这个条件 当n-k比较大的时候 我们显然会把它有的位都给取了 不然的话我们可以考虑dp 暴力状压就可以了 代码: #include <bits/stdc++ ...

  9. 我的世界服务器宝石系统,我的世界1.9-1.7宝石镶嵌插件

    我的世界1.9-1.7宝石镶嵌插件使用之后可以让玩家购买宝石,让玩家的战斗系统更加丰富多变. 简介: 总共有4种宝石 用法: 截图中已包含详细用法和说明 安装插件 这个插件和其他插件一样,下载后再把. ...

最新文章

  1. 小型音乐播放器插件APlayer.js的简单使用例子
  2. python3.7怎么安装dlib_python3.7添加dlib模块的方法
  3. 机器学习笔记(十二)计算学习理论
  4. ABAP表抛FTP通用程序
  5. linux脚本重命名文件,shell脚本批量对文件改名(名字新旧不相关)
  6. matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
  7. matlab绘制二元一次函数图像_【八上数学】 一次函数必考知识点(下)
  8. Netty工作笔记0064---WebSocket长连接开发3
  9. url请求特殊字符转换
  10. 安卓交换位置动画_好马配好鞍,OriginOS系统让安卓系统大变样
  11. chrome访问不了go语言中文网
  12. Java学到什么程度可以找工作?
  13. 没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活
  14. 微信网页授权,以及如何在本地调试
  15. kali下钓鱼网站的制作
  16. 浅谈基于openssl的多级证书,Multi-level CA的签发和管理,以及双向认证
  17. 层次聚类sklearn.cluster包AgglomerativeClustering
  18. Java编程思想读书笔记(七)
  19. Android 项目工程优化
  20. 2.8 数值分析: 矩阵的范数

热门文章

  1. ijidea搭建springMVC入门程序,配置TomCat
  2. 【c++】:c++ 11
  3. BZOJ4451 [Cerc2015]Frightful Formula 多项式 FFT 递推 组合数学
  4. python bisect_Python的bisect模块
  5. oppo乐园中java游戏下载_OPPO乐园
  6. CSS基础知识(盒子模型)
  7. 手机网站php模板修改,Phpcms V9自定义手机WAP模板新方法
  8. nova计算服务 的部署
  9. 喜欢捣蛋的无符号类型
  10. 喜茶皇茶茶叶带您走上致富之路