Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 3209  Solved: 2001
[Submit][Status][Discuss]

Description

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

Input

  第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s,其中di,s<=100000,tot<=1000

Output

  每次的方法数

Sample Input

1 2 5 10 2
3 2 3 1 10
1000 2 2 2 900

Sample Output

4
27
 
首先,计算出f[i]不限制硬币数量时,得到面值为i的方案数

\[f[i]=\sum _{k=1}^{4} f[i-c[k]],\left ( i-c[k]\geq 0 \right )\]

然后利用容斥原理:

ans=不限制硬币的方案数-一种硬币超过限制的方案数+两种硬币超过限制的方案数-三种硬币超过限制的方案数+四种硬币超过限制的方案数

 
 #include<iostream>
#include<cstdio>
using namespace std; #define LL long long int T,s;
int c[],d[];
LL ans,f[]; void dfs(int x,int k,int sum)
{
if(sum<) return;
if(x==)
{
if(k&) ans-=f[sum];//利用二进制的特性控制正负号
else ans+=f[sum];
return;
}
dfs(x+,k,sum);
dfs(x+,k+,sum-(d[x]+)*c[x]);
} int main()
{
for(int i=;i<=;i++) scanf("%d",&c[i]);
scanf("%d",&T);
f[]=;
for(int i=;i<=;i++)
for(int j=c[i];j<=;j++)
f[j]+=f[j-c[i]];
while(T--)
{
for(int j=;j<=;j++) scanf("%d",&d[j]);
scanf("%d",&s);
ans=;
dfs(,,s);
cout<<ans<<endl;
}
return ;
}

最新文章

  1. MyEclipse:各种提示图标的含义
  2. MySQL单表百万数据记录分页性能优化
  3. ASP.NET MVC 3 使用Model自定义验证的样式
  4. lambda 的使用汇总
  5. laravel--上传
  6. MVC5中使用SignalR2.0实现实时聊天室
  7. tomcat 插件
  8. Java NIO学习笔记一 Java NIO概述
  9. Oracle_基本函数查询综合
  10. 使用VMware Converter Standalone Client进行虚拟机 P2V提示 权限不足,无法连接\\ip\admin$的解决方法集锦
  11. UltraISO安装centos7系统
  12. Kafka笔记7(构建数据管道)
  13. python中MetaClass的一些用法
  14. Centos7 systemctl和防火墙firewalld命令(参考https://www.cnblogs.com/marso/archive/2018/01/06/8214927.html)
  15. WPFのclipToBounds与maskToBounds的区别
  16. JFinal Web开发学习(六)验证码验证和注册细节
  17. Mybatis学习(3)关于mybatis全局配置文件SqlMapConfig.xml
  18. Spring(十二)使用Spring的xml文件配置方式实现AOP
  19. spring4.1.6配置quartz2.2.1(maven) &lt;转&gt;
  20. Kotlin Reference (九) Properties and Fields

热门文章

  1. 8、kvm虚拟机添加硬盘
  2. Django 01 django基本介绍及环境搭建
  3. Java中只有按值传递,没有按引用传递!(两种参数情况下都是值传递)
  4. html 页面跳转方式
  5. Python3基础(6)面向对象编程、异常处理
  6. python socket客户端
  7. 服务器部署nginx报错 nginx: [warn] conflicting server name &quot;localhost&quot; on xxx.xxx.xxx.xxx:80, ignored
  8. js 限制文本框不能输入单引号
  9. .net 中的托管与非托管
  10. iShow UI for React 最佳实践