博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[USACO13NOV]No Change
阅读量:6634 次
发布时间:2019-06-25

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

题目大意:

  你有k(k<=16)个硬币,每个硬币都有自己的面值。
  现在你要给n件商品付钱,每件商品也有自己的价格。
  然而老板是个奸商,他绝对不会给你找钱。
  你每次付钱只能用一个硬币,但是你可以一次性买很多商品。
  问你最后最多还能留下多少钱。

思路:

  状压DP。
  f[i]表示状态为i时能买的商品数,i表示你用了哪些硬币。
  从小到大枚举每个状态i,然后枚举状态i中的硬币j,是这次付款用的硬币。
  二分找一下这些硬币最多能买前面连续的多少个商品。
  如果j不在i中,就算作最后剩下的硬币。

1 #include
2 #include
3 #include
4 inline int getint() { 5 register char ch; 6 while(!isdigit(ch=getchar())); 7 register int x=ch^'0'; 8 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); 9 return x;10 }11 const int K=16,N=100001;12 int v[K],sum[N],f[1<

 

转载于:https://www.cnblogs.com/skylee03/p/7743480.html

你可能感兴趣的文章
Java开发规范(MySQL开发规范)-《阿里巴巴Java开发手册》
查看>>
Kali Linux Web 渗透测试秘籍 第九章 客户端攻击和社会工程
查看>>
极客DIY:廉价电视棒玩转GNSS-SDR,实现GPS实时定位
查看>>
sqlalchemy 简单使用
查看>>
How to automatically enroll user and computer certificate in AD
查看>>
puppet 手册之puppet rsync 模块应用完整版
查看>>
Oracle用户、权限、角色管理
查看>>
阿里云流计算中维表join VS 流join
查看>>
Java进程CPU使用率高排查
查看>>
Lesson 8 - Exchange 2010 Active Sync
查看>>
如何搭建 Nginx 网站服务器
查看>>
Oracle 数据库优化的R方法(Method R)
查看>>
CentOS 6.8 SSH远程登录优化
查看>>
一条命令完成Linux下批量杀死某应用程序相关的进程
查看>>
菜鸟学Linux 第061篇笔记 postfix配置,pop3
查看>>
RAID 磁盘矩阵 与服务器集群
查看>>
Okoker Audio Factory v7.1
查看>>
Python 字符串的内置函数
查看>>
js实现中文名的排序
查看>>
查看当前Linux系统的发行版本命令详解
查看>>