博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3312 No Change
阅读量:4581 次
发布时间:2019-06-09

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

题目大意:

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

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

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

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

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

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

思路:

状压dp

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

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

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

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #define inf 213906214310 #define ll long long11 #define MAXN 10010012 using namespace std;13 inline int read()14 {15 int x=0,f=1;char ch=getchar();16 while(!isdigit(ch)) { if(ch=='-') f=-1;ch=getchar();}17 while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}18 return x*f;19 }20 int k,n,dp[1<<17],s[MAXN],ans,val[18];21 int lowbit(ll x) { return x&(-x);}22 int main()23 {24 k=read(),n=read();int x,t;25 for(int i=1;i<=k;i++) val[i]=read();26 for(int i=1;i<=n;i++) s[i]=s[i-1]+read();27 for(int i=0;i
View Code

转载于:https://www.cnblogs.com/yyc-jack-0920/p/8611876.html

你可能感兴趣的文章
完整版本的停车场管理系统源代码带服务端+手机android客户端
查看>>
排序精讲
查看>>
【bzoj3172】 Tjoi2013—单词
查看>>
【uoj2】 NOI2014—起床困难综合症
查看>>
js return的用法
查看>>
子节点填充父元素除去一固定高度后的剩余高度
查看>>
[原]IOS 后台发送邮件
查看>>
(转)JAVA Calendar详解
查看>>
转: 编码,charset,乱码,unicode,utf-8与net简单释义
查看>>
C#--正则匹配
查看>>
5.30 考试修改+总结
查看>>
BA-设计施工调试流程
查看>>
C#-CLR各版本特点
查看>>
css3背景透明文字不透明
查看>>
《java JDK7 学习笔记》之接口与多态
查看>>
LeetCode 96:Unique Binary Search Trees
查看>>
kernel-char设备的建立
查看>>
DVWA-CSRF
查看>>
ubuntu common software introduction
查看>>
资源相互引用时 需添加 PerformSubstitution=True
查看>>