[USACO13NOV]没有找零No Change
来源:互联网 发布:青山知可子女机械人511 编辑:程序博客网 时间:2024/05/22 23:26
[USACO13NOV]没有找零No Change
状压Dp
题解:
f[S]表示用了集合S里的coin之后做多购买前多少个。
转移的时候枚举一个coin,二分一下。
统计答案的时候,所有f[S]==n的算出钱数来,取个min。
Code:
#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>#define D(x) cout<<#x<<" = "<<x<<" "#define E cout<<endlusing namespace std;typedef long long ll;int n,m; ll ans,tot;ll coin[21],sum[100005];int f[100005];int main(){ freopen("a.in","r",stdin); scanf("%d%d",&m,&n); for(int i=0;i<m;i++){ scanf("%lld",coin+i); tot+=coin[i]; } for(int i=1;i<=n;i++){ scanf("%lld",sum+i); sum[i]+=sum[i-1]; } int All=(1<<m)-1; for(int S=0;S<=All;S++){ for(int i=0;i<m;i++){ if((S>>i)&1){ int x=f[S^(1<<i)]; x=upper_bound(sum+x,sum+n+1,coin[i]+sum[x])-sum-1; f[S]=max(f[S],x); } } } ans=1e17; for(int S=0;S<=All;S++){// D(S); D(f[S]); E; if(f[S]==n){ ll res=0; for(int i=0;i<m;i++){ if((S>>i)&1) res+=coin[i]; } ans=min(ans,res); } } if(ans>tot) puts("-1"); else printf("%lld\n",tot-ans);}
阅读全文
0 0
- [USACO13NOV]没有找零No Change
- 洛谷 P3092 [USACO13NOV]没有找零No Change
- bzoj3312[Usaco2013 Nov]No Change不找零
- 不设找零 No Change (nochange) usaco2013 题解
- [bzoj3312][Usaco2013 Nov][DP]No Change不找零
- Coin Change【硬币找零】
- zju2772快速找零Quick Change
- uva674 - Coin Change(硬币找零)
- NO.2 找零时刻
- 322. Coin Change(硬币找零)
- UVa-674 - Coin Change 不同面值找零的方案数
- Geeks 面试题: Coin Change最大找零方案数
- 【解题报告】uva674_Coin Change(硬币找零, dp, 完全背包)
- 谜题2:Time for a change 找零时刻
- 找零
- 找零
- 找零
- bzoj3312: [Usaco2013 Nov]No Change
- 手把手教你安装深度学习软件环境(附代码)
- AFNetworking 提示"The resource could not be loaded because the App Transport Security policy requires
- 潜伏者(关于map的用法)
- 飞扬的小鸟
- SpringBoot23-spingboot数据访问-Spring Data REST
- [USACO13NOV]没有找零No Change
- c#读取ini配置文件、将配置数据保存至ini文件
- 聪明的开发者们,中秋不来猜个谜吗?
- C#--Winform-按照班级名称查询学员列表并优化
- Dash Speed
- Firefox 新版采用新引擎,速度是旧版的 2 倍,名字和 Logo 也变了
- [USACO13DEC]假期计划(黄金)Vacation Planning (gold)
- 11章,关联容器
- 2017.10.4离线赛总结