【BZOJ1042】[HAOI2008]硬币购物 容斥
2024-09-08 11:07:14
【BZOJ10492】[HAOI2008]硬币购物
Description
硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。
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
3 2 3 1 10
1000 2 2 2 900
Sample Output
4
27
27
题解:先跑一边完全背包,然后对于每个询问,我们考虑容斥。
ans=总数-至少一种硬币超限的+至少两种硬币超限的-至少三种硬币超限的+四种硬币超限的。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
int n,sum,flag,s;
ll f[100010];
ll ans;
int c[10],d[10];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
void dfs(int x)
{
if(x==5)
{
ans+=flag*f[s-sum];
return ;
}
if(sum+c[x]*d[x]<=s) sum+=c[x]*d[x],flag=-flag,dfs(x+1),sum-=c[x]*d[x],flag=-flag;
dfs(x+1);
}
int main()
{
int i,j;
f[0]=1;
for(i=1;i<=4;i++)
{
c[i]=rd();
for(j=c[i];j<=100000;j++) f[j]+=f[j-c[i]];
}
n=rd();
for(i=1;i<=n;i++)
{
for(j=1;j<=4;j++) d[j]=rd()+1;
s=rd(),flag=1,ans=0;
dfs(1);
printf("%lld\n",ans);
}
return 0;
}
最新文章
- easyui datagrid 学习
- IOS NSInvocation用法简介
- NFA和DFA区别
- 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题
- quartz定时任务时间配置
- HDU 3584 Cube
- 1、JavaScript基础
- 实现jsp页面显示用户登录信息,利用session保存。
- A标签中通过href和onclick传递的this对象
- 【Tools】ubuntu16.04安装搜狗输入法
- mysql命令行导入导出数据库
- oracle更改字符集为zhs16GBK
- MyBatis学习笔记(二) Executor
- chrome浏览器安装不上的惨痛经历
- Java&;Android TimeUtil ~ A Good Util!
- 583. Delete Operation for Two Strings
- 追求极致--纯css制作三角、圆形按钮,兼容ie6
- php高级开发参考地址
- 【Spring学习笔记-MVC-17】Spring MVC之拦截器
- java 扁平化输出json所有节点key/value
热门文章
- hdu 4741 Save Labman No.004异面直线间的距离既构成最小距离的两个端点
- SHUoj 字符串进制转换
- postgresql-9.0.18-1-linux.run启动
- Using a USB host controller security extension for controlling changes in and auditing USB topology
- Servlet 2.4 规范之第四篇:Servlet上下文
- npm install Unexpected token in JSON at position XXX
- (41)C#异步编程
- 洛谷——P1294 高手去散步
- 深入理解Atomic原子类
- CODECHEF Oct. Challenge 2014 Children Trips