1042: [HAOI2008]硬币购物

题意:4种硬币。面值分别为c1,c2,c3,c4。1000次询问每种硬币di个,凑出\(s\le 10^5\)的方案数


完全背包方案数? 询问太多了
看了题解
只有4种物品,每种物品有数量限制
不考虑数量限制,\(f(i)\)凑出i的方案数,一遍完全背包就行了,注意先枚举物品
然后对于超过限制容斥:
\[ 都不超过限制=所有方案- \ge 1个超限制+\ge 2个超限制-... \]
i超限制就是i至少选了\(d_i+1\)个,其他任意选

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+5;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}int c[5],d[5],sum;
ll f[N];
int main() {//freopen("in","r",stdin);for(int i=1; i<=4; i++) c[i]=read();f[0]=1;for(int i=1; i<=4; i++)for(int j=c[i]; j<=1e5; j++) f[j] += f[j-c[i]];int T=read(), All=1<<4;for(int i=1; i<=T; i++) {for(int i=1; i<=4; i++) d[i]=read();sum=read(); ll ans=0;for(int s=0; s<All; s++) {int one=0;ll val=sum;for(int i=0; i<4; i++) if(s&(1<<i)) one++, val-=(ll)(d[i+1]+1)*c[i+1];if(val>=0) ans += (one&1) ? -f[val] : f[val]; }printf("%lld\n",ans);}
}

转载于:https://www.cnblogs.com/candy99/p/6616760.html

BZOJ 1042: [HAOI2008]硬币购物 [容斥原理]相关推荐

  1. BZOJ 1042 [HAOI2008]硬币购物

    1042: [HAOI2008]硬币购物 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1446  Solved: 845 [Submit][Sta ...

  2. bzoj 1042: [HAOI2008]硬币购物(dp+容斥)

    1042: [HAOI2008]硬币购物 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2555  Solved: 1537 [Submit][St ...

  3. bzoj 1042 HAOI2008 硬币购物

    这道题思路是在是神. 先dp出没有限制时候的方案数. dp的时候注意 先循环 1..4 再循环 1..maxs 防止重复.边界是f[0] = 1. 这么基础的背包都忘记了=_= 接下来处理有重复的问题 ...

  4. 1042: [HAOI2008]硬币购物 - BZOJ

    Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...

  5. P1450 [HAOI2008]硬币购物

    P1450 [HAOI2008]硬币购物 题意: 共有 4 种硬币.面值分别为c1,c2,c3,c4c_1,c_2,c_3,c_4c1​,c2​,c3​,c4​. 某人去商店买东西,去了 n 次,对于 ...

  6. BZOJ1042 [HAOI2008]硬币购物

    Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买s i的价值的东西.请问每次有多少种付款方法. Input 第 ...

  7. [bzoj1042][HAOI2008]硬币购物

    有三种硬币,每种有自己的币值. 然后有n次询问,每次都给出每种硬币的数量和要付的钱s,求有多少种付法.n<=1000 s<=100000 ------ 不考虑限制,就是个简单dp.... ...

  8. P1450 [HAOI2008] 硬币购物题解

    题面 题目描述 共有 4 种硬币.面值分别为 ,,,​. 某人去商店买东西,去了 n 次,对于每次购买,他带了 ​ 枚 i 种硬币,想购买 s 的价值的东西.请问每次有多少种付款方法. 输入格式 输入 ...

  9. HAOI2008 硬币购物

    题目传送门 据说\(NOIp\)前写题解会\(\mathcal{RP}\)++ 看数据范围,肯定不能写多重背包,会\(T\)飞~ 如果每种硬币没有个数限制,就可以用完全背包了. 正难则反,我们可以先用 ...

最新文章

  1. 高可用keepalived实例
  2. iPhone走马灯控件实现
  3. vue 数组中嵌套数组_vue+element-ui表单校验之数组多层嵌套
  4. 从Linux到Meego
  5. HTML+CSS+JS实现 ❤️酷炫3D瀑布流动画特效❤️
  6. Linux系统编程26:进程间通信之进程间通信的基本概念
  7. rpm常用命令集合2
  8. cocos2D中实现滑动菜单CCScrollView+CCMenu效果,(注意不是cocos2D-x)!!
  9. debian添加快捷启动方式
  10. Python 基础数据类型
  11. 1347 格子游戏 (并查集)
  12. 游戏编程所需要的知识
  13. ActiveSync的使用
  14. PS调出唯美冷色情侣婚纱写真照
  15. 如何设计一个网络程序
  16. 如何使windows系统环境变量的改变即时生效
  17. Sencha Cmd的简介
  18. 英特尔第十代处理器为什么不支持win7_Intel的7代酷睿CPU可以安装Win7系统吗?能不能完美支持呢?为什么有人说不能使用Win7系统...
  19. PNAS:控制缺乏情感的肢体语言的大脑回路
  20. JVM垃圾回收——三色标记法

热门文章

  1. 基于JMS规范的ActiveMQ
  2. IOS --xcode删除Provisioning Profiles文件
  3. 【指针】C++中指针的使用艺术[转]
  4. Python压缩文件夹/解压缩zip文件
  5. linux驱动基础开发0——linux 设备驱动概述-转
  6. UTF-8 编码里,一个汉字占用多少个字节 -转
  7. sqlite 常用命令
  8. 蓝桥杯 ALGO-67 算法训练 最大值与最小值的计算
  9. 蓝桥杯 BASIC-8 基础练习 回文数
  10. 蓝桥杯 BASIC-20 基础练习 数的读法 问题