题目大意:

到商场购物,他的钱包里有K个硬币

想按顺序买 N个物品,第i个物品需要花费c(i)块钱

在依次进行的购买N个物品的过程中,可以随时停下来付款,每次付款只用一个硬币

支付购买的内容是从上一次支付后开始到现在的这些所有物品(前提是该硬币足以支付这些物品的费用)

如果支付的硬币面值大于所需的费用,他不会得到任何找零

请计算出在购买完N个物品后,最多剩下多少钱

思路:

状压dp

设使用了状态为i的硬币最远能够达到哪个物品

转移的时候从 i 里扔掉每一个1来转移过来

最后看一眼哪些dp可以达到n 取一下状态的补集求一下和

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define inf 2139062143
#define ll long long
#define MAXN 100100
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int k,n,dp[<<],s[MAXN],ans,val[];
int lowbit(ll x) {return x&(-x);}
int main()
{
k=read(),n=read();int x,t;
for(int i=;i<=k;i++) val[i]=read();
for(int i=;i<=n;i++) s[i]=s[i-]+read();
for(int i=;i<k;i++) dp[<<i]=upper_bound(s+,s+n+,val[i+])-s-;
for(int i=;i<(<<k);i++)
{
if(i==lowbit(i)) continue;
for(int t=i,r=i;r;r-=lowbit(r))
{
t-=lowbit(r);
dp[i]=max(dp[i],(int)(upper_bound(s+dp[t]+,s+n+,s[dp[t]]+val[int(log2(lowbit(r)))+])-s-));
t+=lowbit(r);
}
}
ans=-;
for(int i=;i<(<<k);i++)
{
if(dp[i]!=n) continue;t=;
for(int j=((<<k)-)^i;j;j-=lowbit(j))
t+=val[int(log2(lowbit(j)))+];
ans=max(t,ans);
}
printf("%d",ans);
}

最新文章

  1. BFC的深入理解
  2. Java陷阱之assert关键字
  3. Spring 容器
  4. log4j介绍以及使用教程
  5. [实变函数]2.2 聚点 (cluster point), 内点 (interior point), 界点 (boundary point)
  6. Cookie与Session详解
  7. 学习笔记-[Maven实战]-第三章:Maven使用入门(1)
  8. CCLabelAtlas创建自定义字体
  9. PHP面试题二
  10. C/C++指针和数组的关系
  11. java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.&lt;init&gt;(L
  12. 【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!
  13. 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)
  14. junit3.8的使用
  15. Android的log日志知识点剖析
  16. 清明培训 清北学堂 DAY2
  17. matlab的解方程的例子
  18. Terraform:简介
  19. VS2010下MFC的串口编程
  20. openstack之虚拟机管理命令

热门文章

  1. LTTng
  2. Go:函数、defer
  3. Random和ArrayList的应用
  4. TensorFlow — 相关 API
  5. 阻塞套接字返回EAGAIN
  6. BZOJ 1832、1787 洛谷 4281 [AHOI2008]紧急集合
  7. 使用Mybatis的逆向工程自动生成代码
  8. session 分布式处理-----https://segmentfault.com/a/1190000013447750?utm_source=tag-newest
  9. CF899F. Letters Removing
  10. [bzoj3781]小B的询问_莫队