4976: 宝石镶嵌
题目大意自己看吧:
题目链接
题解:
mx为所有val中最大的
1、如果n-k>log(mx)的话,就直接把所有数或起来就好了。
2、否则的话就DP,f[i][j]表示前i个和为j所用的最少数,这个很好DP,注意一下会爆空间,滚一下吧。(具体详见代码)
/*by cx_lzx*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
const int N=1e5+10;
const int inf=0x3f3f3f3f;
/*f[i][j]表示前i个和为j所用的最少数*/
int f[200000],g[200000];
int n,k;
int val[N],yu[20];
int mx=0;
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) scanf("%d",&val[i]),mx=max(mx,val[i]);if(n>k+log(mx)/log(2)){int ans=0;for(int i=1;i<=n;i++) ans|=val[i];// printf("!"); printf("%d\n",ans);return 0;}memset(f,inf,sizeof(f));f[0]=0;memset(g,inf,sizeof(g));yu[0]=1;for(int i=1;i<=17;i++) yu[i]=yu[i-1]*2;/* 爆空间版本 for(int i=0;i<=n-1;i++){for(int j=0;j<=yu[17]-1;j++){if(f[i][j]<inf){f[i+1][j]=min(f[i][j],f[i+1][j]);f[i+1][j|val[i+1]]=min(f[i+1][j|val[i+1]],f[i][j]+1);}}}int ans=0;for(int i=yu[17]-1;i>=0;i--){if(f[n][i]<=n-k){ans=i;break;}}*/for(int i=0;i<=n-1;i++){for(int j=0;j<=yu[17]-1;j++){if(i%2==0){if(f[j]<inf){g[j]=min(f[j],g[j]);g[j|val[i+1]]=min(g[j|val[i+1]],f[j]+1);}}else{if(g[j]<inf){f[j]=min(f[j],g[j]);f[j|val[i+1]]=min(f[j|val[i+1]],g[j]+1);}}}}int ans=0;if(n%2==0)for(int i=yu[17]-1;i>=0;i--){if(f[i]<=n-k){ans=i;break;}}else{for(int i=yu[17]-1;i>=0;i--){if(g[i]<=n-k){ans=i;break;}}}printf("%d\n",ans);
}
开学第一天就是周五,明天就可以回家了,然而所有课的老师全都在吹水。。。。。。
啥作业都没有,让我一度有些不适应。。。。。。。
又不敢整个晚修都来机房颓QAQ,在教室自习真的吓坏我QAQ。旁边那位大佬一直刷题,感觉都刷了30多页了,蒟蒻好方。
4976: 宝石镶嵌相关推荐
- BZOJ 4976: 宝石镶嵌 背包
4976: 宝石镶嵌 Time Limit: 2 Sec Memory Limit: 128 MB Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,...,w_n ...
- [bzoj 4976]宝石镶嵌
魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,-,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升法杖的威力.不幸的是,小Q的法杖上宝石镶嵌栏太少了,他必须扔掉k个宝石才能将剩下的宝石镶 ...
- bzoj 4976 宝石镶嵌
传送门:www.lydsy.com/JudgeOnline/problem.php?id=4976 题意: 给n(n<=100000)个宝石,每个有个val(val<=100000),求取 ...
- bzoj 4976: 宝石镶嵌 动态规划
题意 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,-,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升法杖的威力.不幸的是,小Q的法杖上宝石镶嵌栏太少了,他必须扔掉k个宝石才能将剩下的 ...
- bzoj 4976: 宝石镶嵌
题意:n个数,去掉k个,使剩下的数的or和最大. 题解: 设a是w的最大值.分两种情况:1:n-k>=log a,每一位就一定可以选一个数来补上(除非所有都没有这一位).2:n-k< lo ...
- 4976: [Lydsy1708月赛]宝石镶嵌 dp
Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,-,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升 法杖的威力.不幸的是,小Q的法杖上宝石镶嵌栏太少了,他必须扔掉 ...
- 【bzoj 4976】宝石镶嵌(贪心、高位前缀和)
传送门biu~ 当n-k>=16时,每一位上的1都可以出现,只需要考虑每位是否有1即可. 剩下的情况n最大只有115(数据范围瞬间变得友善了). 令f[state]代表组合出state最少需要多 ...
- BZOJ4976: [Lydsy1708月赛]宝石镶嵌
BZOJ4976: [Lydsy1708月赛]宝石镶嵌 https://lydsy.com/JudgeOnline/problem.php?id=4976 分析: 本来是从\(k\le 100\)这里 ...
- 我的世界服务器宝石系统,我的世界1.9-1.7宝石镶嵌插件
我的世界1.9-1.7宝石镶嵌插件使用之后可以让玩家购买宝石,让玩家的战斗系统更加丰富多变. 简介: 总共有4种宝石 用法: 截图中已包含详细用法和说明 安装插件 这个插件和其他插件一样,下载后再把. ...
最新文章
- TinyMind 汉字书法识别竞赛开启总决赛啦!!
- maven只打包java目录_ssm项目中maven对resources目录打包的路径_默认路径,自定义路径...
- BootStrap 效果展示
- 【数据库系统概论】考研第六部分重点分析【6.1】
- 防止QQ密码被盗的五个绝招
- ACM 会场安排问题
- getParameter
- [译] iOS 设计模式进阶
- 4.7 Observer(观察者)
- Atitit 语音识别的技术原理
- 非常经典的java编程题全集-共50题(11-30)
- fio: engine libaio not loadable
- c语言中compar的用法,compare的用法知识整理
- ysoserial exploit/JRMPClient原理剖析
- Java工程师 数据结构与算法 数组面试题(Day40)
- 【PyTorch】pkg_resources
- matplotlib图表多曲线多纵轴绘制工具方法
- 四、全国计算机三级数据库考试——操作题(6—10套)
- 钽电容的作用,钽电容滤波好的原因
- 集团固定资产管理有哪些难题,又应该如何解决?
热门文章
- modbus tcp 协议详解
- 密码管理工具 — Lastpass
- 关于12306网站新增支付宝支付服务功能的公告
- 台湾知名炸鸡连锁店疑供应逾期肉品 遭封存追查
- 从永远到永远-SpringBoot微信公众号开发实战(一)-自用
- 论文阅读:Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour
- AutoCAD .Net 二次开发 VisualStudio 及 .Net Framework 选择
- TransactionScope事务简介
- 万能程序员时代来临!
- C# abstract详解