【题解】

  我们设总共有m个二进制位出现过1,那么如果n-k≥m,显然所有的1都可以出现,那么答案就是把所有的数或起来。

  如果n-k<m,那么因为k不超过100,ai不超过1e5,所以n不超过117,直接n*1e5的Dp即可。

  Dp的方式也是多种多样,如果设f[i][j]表示前i个数字或出j最少需要几个数字,那么转移方程为f[i][j|a[i]]=min(f[i-1][j|a[i]],f[i-1][j]+1]).

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define rg register
#define N 131072
using namespace std;
int n,m,k,sum,ans,a[N],f[][N];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
int main(){
n=read(); k=read();
for(rg int i=;i<=n;i++) a[i]=read(),sum|=a[i];
int x=sum;
for(rg int i=;i;i--)if(x>=(<<i)) m++,x-=(<<i);
if(n-k>=m) printf("%d\n",sum);
else{
for(rg int i=;i<=n;i++)
for(rg int j=;j<N;j++) f[i][j]=n;
f[][]=;
for(rg int i=;i<=n;i++) {
for(rg int j=;j<N;j++)
f[i][j|a[i]]=min(f[i][j|a[i]],f[i-][j]+);
for (rg int j=;j<N;j++)
f[i][j]=min(f[i][j],f[i-][j]);
}
for(rg int i=;i<N;i++) if(f[n][i]<=n-k) ans=i;
printf("%d\n",ans);
}
return ;
}
 #include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define rg register
#define N 131072
using namespace std;
int n,m,k,sum,ans,a[N],f[][N];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
int main(){
n=read(); k=read();
for(rg int i=;i<=n;i++) a[i]=read(),sum|=a[i];
int x=sum;
for(rg int i=;i;i--)if(x>=(<<i)) m++,x-=(<<i);
// printf("%d %d\n",m,sum);
if(n-k>=m) printf("%d\n",sum);
else{
for(rg int i=;i<=n;i++)
for(rg int j=;j<N;j++) f[i][j]=-n;
f[][]=;
for(rg int i=;i<=n;i++)
for(rg int j=;j<N;j++)
f[i][j]=max(f[i][j],f[i-][j]+),
f[i][j|a[i]]=max(f[i][j|a[i]],f[i-][j]);
for(rg int i=;i<N;i++) if(f[n][i]>=k) ans=i;
printf("%d\n",ans);
}
return ;
}

BZOJ 4976 [Lydsy1708月赛]宝石镶嵌的更多相关文章

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

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

  2. KMP + BZOJ 4974 [Lydsy1708月赛]字符串大师

    KMP 重点:失配nxtnxtnxt数组 意义:nxt[i]nxt[i]nxt[i]表示在[0,i−1][0,i-1][0,i−1]内最长相同前后缀的长度 图示: 此时nxt[i]=jnxt[i]=j ...

  3. 【刷题】BZOJ 4977 [Lydsy1708月赛]跳伞求生

    Description 小Q最近沉迷于<跳伞求生>游戏.他组建了一支由n名玩家(包括他自己)组成的战队,编号依次为1到n.这个游 戏中,每局游戏开始时,所有玩家都会从飞机上跳伞,选择一个目 ...

  4. BZOJ 4971: [Lydsy1708月赛]记忆中的背包

    神仙构造 分成x个1和一堆>=w-x的大物品 (x<=20 w>=50) 则拼成w的方案中有且仅有一个大物品 若最终序列中有x个1,有一个大物品为w-k,可以提供C(x,k)种方案 ...

  5. bzoj 4975: [Lydsy1708月赛]区间翻转【博弈论】

    必败状态是倒序排列,也就是正序对为0 然后发现,每次翻转都是有奇数个数对(\( C_{4x+2}^{2} C_{4x+3}^{2} \) 都是奇数),所以每次翻转丢回改变正反数对的奇偶性 又因为偶数为 ...

  6. bzoj 4974 [Lydsy1708月赛]字符串大师 KMP 最小循环元 构造

    LINK:字符串大师 给出一个字符串的每个前缀的最小循环元 还原字典序最小的原字符串. 一个比较显然的结论 或者说 学过KMP的都知道 对于每个前缀i求出nex数组后 那么i-nex[i]为最小循环元 ...

  7. BZOJ4978: [Lydsy1708月赛]泛化物品(乱搞)

    4978: [Lydsy1708月赛]泛化物品 Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 220  Solved: 70[Submit][Statu ...

  8. BZOJ4977: [[Lydsy1708月赛]跳伞求生(不错的贪心)

    4977: [[Lydsy1708月赛]跳伞求生 Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 446  Solved: 142[Submit][Sta ...

  9. BZOJ4975: [Lydsy1708月赛]区间翻转( 博弈&逆序对)

    4975: [Lydsy1708月赛]区间翻转 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 265  Solved: 140[Submit][Stat ...

随机推荐

  1. python datatime日期和时间值模块

    datetime.time():是一个时间类,这个类接受4个参数,分别代表时,分,秒,毫秒.参数的默认值是为0 #!/usr/bin/env python #coding:utf8 import da ...

  2. [ZJOI2005]沼泽鳄鱼

    题目描述 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客. 为了让游玩更有情趣,人们在池塘的中央建设了几座石墩和石桥 ...

  3. 51nod1298 圆与三角形

    1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...

  4. BFS POJ 3414 Pots

    题目传送门 /* BFS:六种情况讨论一下,BFS轻松解决 起初我看有人用DFS,我写了一遍,TLE..还是用BFS,结果特判时出错,逗了好长时间 看别人的代码简直是受罪,还好自己终于发现自己代码的小 ...

  5. 【SpringMVC框架】非注解的处理器映射器和适配器

    参考来源:     http://blog.csdn.net/acmman/article/details/46968939 处理器映射器就是根据URL来找Handler,处理器适配器就是按照它要求的 ...

  6. 利用 nodeJS 搭建一个简单的Web服务器(转)

    下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...

  7. iPhone4到iPhone6的设计、制造工艺历程浅析

    这里就阐述一下我对这几个手机在设计和制造工艺上的一些看法. 这 5 个型号概括起来就三个外观: iPhone4 的三明治夹心设计. iPhone5 的三段式铝合金一体成型. iPhone6 的全金属一 ...

  8. webview页面间的通信问题

    前提 记一次多页面开发. 开发需求时会对页面刷新(reload),返回到上一页(用户返回 / history.go()) 页面间的通信 sessionStorage保存本次会话的信息,同步到新页面或上 ...

  9. Font Awesome 图标使用总结

    参考 http://fontawesome.dashgame.com/ 1 大图标递进  fa-lg (33%递增).fa-2x. fa-3x.fa-4x,或者 fa-5x  2 固定宽度  fa-f ...

  10. WEB-CSS实现单行(多行)文本溢出显示省略号

    //单行文本溢出部分隐藏显示省略号...overflow: hidden; text-overflow:ellipsis; white-space: nowrap; /** n 行文本溢出部分隐藏显示 ...