博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 4976 [Lydsy1708月赛]宝石镶嵌
阅读量:4560 次
发布时间:2019-06-08

本文共 1766 字,大约阅读时间需要 5 分钟。

【题解】

  我们设总共有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]).

1 #include
2 #include
3 #include
4 #define LL long long 5 #define rg register 6 #define N 131072 7 using namespace std; 8 int n,m,k,sum,ans,a[N],f[120][N]; 9 inline int read(){10 int k=0,f=1; char c=getchar();11 while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();12 while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();13 return k*f;14 }15 int main(){16 n=read(); k=read();17 for(rg int i=1;i<=n;i++) a[i]=read(),sum|=a[i];18 int x=sum;19 for(rg int i=16;i;i--)if(x>=(1<
=m) printf("%d\n",sum);21 else{22 for(rg int i=0;i<=n;i++)23 for(rg int j=0;j
View Code
1 #include
2 #include
3 #include
4 #define LL long long 5 #define rg register 6 #define N 131072 7 using namespace std; 8 int n,m,k,sum,ans,a[N],f[120][N]; 9 inline int read(){10 int k=0,f=1; char c=getchar();11 while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();12 while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();13 return k*f;14 }15 int main(){16 n=read(); k=read();17 for(rg int i=1;i<=n;i++) a[i]=read(),sum|=a[i];18 int x=sum;19 for(rg int i=16;i;i--)if(x>=(1<
=m) printf("%d\n",sum);22 else{23 for(rg int i=0;i<=n;i++)24 for(rg int j=0;j
=k) ans=i;31 printf("%d\n",ans);32 }33 return 0;34 }
View Code

 

转载于:https://www.cnblogs.com/DriverLao/p/9761427.html

你可能感兴趣的文章
通过ida dump Uinity3D的加密dll
查看>>
一步步学Qt,第九天-Q”STL”与STL-再看C++
查看>>
JAVA集合框架的学习
查看>>
Hackers’ Crackdown-----UVA11825-----DP+状态压缩
查看>>
卡数字怀念的东西:魔方
查看>>
EL表达式的隐式对象
查看>>
一本开源的程序员快速成长秘笈
查看>>
python基础 六、模块和包
查看>>
url传中文,转码
查看>>
NSIndexSet
查看>>
在Linux环境中使用Ext3文件系统
查看>>
配置git使用socks5代理
查看>>
家庭作业:12.18,9.13,8.25,2.62
查看>>
wpf DataGrid 里的列模版的值绑定
查看>>
Python+requests库 POST接口图片上传
查看>>
pyCharm激活
查看>>
随机过程书籍介绍
查看>>
hzwer第五套模拟赛
查看>>
创建动态组件的要点
查看>>
Maven:The parent project must have a packaging type of POM
查看>>