传送门

题意简述:有四种面值的硬币,现在qqq次询问(q≤1000)(q\le1000)(q≤1000),每次给出四种硬币的使用上限问最后刚好凑出sss块钱的方案数(s≤100000)(s\le100000)(s≤100000).


思路:先跑完全背包预处理出所有硬币都无限制时候的答案。

然后每次询问的时候枚举容斥掉多算的情况即可。

代码:

#include<bits/stdc++.h>
using namespace std;
long long tot,c[5],d[5],s,dp[100005];
inline long long f(long long i){return c[i]*(d[i]+1);}
int main(){
    scanf("%lld%lld%lld%lld%lld",&c[1],&c[2],&c[3],&c[4],&tot);
    dp[0]=1;
    for(int i=1;i<=4;++i)for(int j=c[i];j<=100005;++j)dp[j]+=dp[j-c[i]];
    while(tot--){
        long long ans=0;
        scanf("%lld%lld%lld%lld%lld",&d[1],&d[2],&d[3],&d[4],&s);
        ans=dp[s];
        if(s-f(1)>=0)ans-=dp[s-f(1)];
        if(s-f(2)>=0)ans-=dp[s-f(2)];
        if(s-f(3)>=0)ans-=dp[s-f(3)];
        if(s-f(4)>=0)ans-=dp[s-f(4)];
        if(s-f(1)-f(2)>=0)ans+=dp[s-f(1)-f(2)];
        if(s-f(1)-f(3)>=0)ans+=dp[s-f(1)-f(3)];
        if(s-f(1)-f(4)>=0)ans+=dp[s-f(1)-f(4)];
        if(s-f(2)-f(3)>=0)ans+=dp[s-f(2)-f(3)];
        if(s-f(2)-f(4)>=0)ans+=dp[s-f(2)-f(4)];
        if(s-f(3)-f(4)>=0)ans+=dp[s-f(3)-f(4)];
        if(s-f(1)-f(2)-f(3)>=0)ans-=dp[s-f(1)-f(2)-f(3)];
        if(s-f(4)-f(2)-f(3)>=0)ans-=dp[s-f(4)-f(2)-f(3)];
        if(s-f(1)-f(2)-f(4)>=0)ans-=dp[s-f(1)-f(2)-f(4)];
        if(s-f(1)-f(4)-f(3)>=0)ans-=dp[s-f(1)-f(4)-f(3)];
        if(s-f(1)-f(2)-f(3)-f(4)>=0)ans+=dp[s-f(1)-f(2)-f(3)-f(4)];
        printf("%lld\n",ans);
    }
    return 0;
}

2019.02.09 bzoj1042: [HAOI2008]硬币购物(完全背包+容斥原理)的更多相关文章

  1. BZOJ1042 [HAOI2008]硬币购物 完全背包 容斥原理

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1042 题目概括 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了t ...

  2. Luogu-P1450 [HAOI2008]硬币购物-完全背包+容斥定理

    Luogu-P1450 [HAOI2008]硬币购物-完全背包+容斥定理 [Problem Description] 略 [Solution] 上述题目等价于:有\(4\)种物品,每种物品有\(d_i ...

  3. BZOJ1042 [HAOI2008]硬币购物 【完全背包 + 容斥】

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

  4. BZOJ 1042 [HAOI2008]硬币购物(完全背包+容斥)

    题意: 4种硬币买价值为V的商品,每种硬币有numi个,问有多少种买法 1000次询问,numi<1e5 思路: 完全背包计算出没有numi限制下的买法, 然后答案为dp[V]-(s1+s2+s ...

  5. [bzoj1042][HAOI2008][硬币购物] (容斥原理+递推)

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

  6. bzoj1042: [HAOI2008]硬币购物

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  7. BZOJ1042:[HAOI2008]硬币购物(DP,容斥)

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

  8. 【BZOJ】1042: [HAOI2008]硬币购物(dp+容斥原理)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1042 一开始写了个O(nv)的背包,果断tle... 看了题解,,好神..用了组合数学中的多重集合方 ...

  9. BZOJ-1042:硬币购物(背包+容斥)

    题意:硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. 思路:这么老的题,居然今天才做到. ...

随机推荐

  1. Karma - MVC Framework for Unity3D

    Karma is an MVC framework for Unity3D. Because of how Unity is structured, it actually turns out to ...

  2. The following packages have unmet dependencies错误

    当出现类似这类错误: The following packages have unmet dependencies: python-dev : Depends: python (= 2.7.5-5ub ...

  3. FortiGate恢复出厂

    1.需求 当需要把设备的所有配置删除,可进行恢复出厂操作.恢复出厂后所有配置都将丢失,若一定要恢复出厂设置建议前先备份当前的配置:备份配置操作步骤请参见"系统管理">> ...

  4. ajax POST跨域请求完美解决

    方式: js前端请求: function getOcrInfo(imageData){$.ajax({   url: 'http://localhost:8080/LSWS/ws/ocr/getWeb ...

  5. php的ob缓存详解

    前言引入 先看下面的代码: 这个代码,每次输出后都有sleep(1),表示程序执行暂定一秒,想象中浏览器应该是每隔1s钟,逐渐显示1到5的,然后事实情况确不是,浏览器访问的时候,等了5s种后,页面上一 ...

  6. android的Afinal框架下的数据库更新

    项目需要,版本升级时给表添加了一些新的字段,发现出现异常. 解决方法:监听数据库的版本号,更新数据库. 创建FinalDb对象时使用如下的构造函数,监听版本号的变化: db = FinalDb.cre ...

  7. Spring配置文件XML详解

    1.bean的基本属性配置: <!-- id是bean的标识符,必须唯一,如果没有配置id,name默认为标识符 如果配置了id,有配置了name,那么name为别名 name可以设置多个别名, ...

  8. selenium去掉下载弹窗

    from selenium import webdriver import time import urllib2 class Download(): def __init__(self): self ...

  9. mysql5.7 新增的json字段类型

    一.我们先创建一个表,准备点数据 CREATE TABLE `json_test` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'I ...

  10. 手机端适配iPhoneX

    iPhoneX取消了物理按键,改成底部小黑条,这一改动导致网页出现比较尴尬的屏幕适配问题.对于网页而言,顶部(刘海部位)的适配问题浏览器已经做了处理,所以我们只需要关注底部与小黑条的适配问题即可(即常 ...