bzoj 1042 DP+容斥原理
2024-08-28 12:48:21
我们可以先DP预处理出W[I]代表买I的东西,每种钞票的个数
不做限制的方案数,那么对于每一组数据的限制,我们可以知道
W[S-C[I]*(D[I]+1)]C为面值,D为数量,这个代表第I种钞票一定
超了的方案数,那么假设我们用二进制来表示对于四种钞票的限制情况
0000表示都不限制,1000代表第一种必须用超,其余没有限制
我们要求的是都限制的请款
那么根据容斥原理,我们可以知道答案是都不限制的-有奇数个1的情况+偶数个1的情况
dfs处理16种情况就好了
/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/
//By BLADEVIL
var
i, j :longint;
c, d :array[..] of longint;
t, s :longint;
w :array[..] of int64;
ans :int64;
procedure dfs(now,sum,flag:longint);
begin
if sum< then exit;
if now= then
begin
if flag= then
ans:=ans+w[sum] else
ans:=ans-w[sum];
exit;
end;
dfs(now+,sum,flag);
dfs(now+,sum-c[now]*(d[now]+),flag xor );
end;
begin
for i:= to do read(c[i]);
read(t);
w[]:=;
for i:= to do
for j:=c[i] to do w[j]:=w[j]+w[j-c[i]];
for i:= to t do
begin
for j:= to do read(d[j]);
read(s);
ans:=;
dfs(,s,);
writeln(ans);
end;
end.
最新文章
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
- 神经网络模型及R代码实现
- 利用@media screen实现网页布局的自适应
- mysql基本操作
- php随机生成验证码代码
- composer 自动加载原理
- 【leetcode❤python】 219. Contains Duplicate II
- C#各类型大小
- Debugging a Parallel Application
- DTCMS获取栏目子类
- lnmp全面优化集合nginx+mysql+php
- 关于APP,原生和H5开发技术的争论
- JVM笔记3:Java垃圾收集算法与垃圾收集器
- 【python之旅】python的基础三
- Linux下源码安装Nginx服务
- cct,web技术
- java对Microsoft Document的操作--->;对Excel的操作
- 读取txt文件加DevExpress之进度条progressBarControl
- Linux - 简明Shell编程01 - 第一个脚本(HelloShell)
- java高并发实战(一)——为什么需要并发