[BZOJ1042][HAOI2008]硬币购物 (DP+容斥原理)
来源:互联网 发布:蒙古输入法软件下载 编辑:程序博客网 时间:2024/04/29 17:54
题目大意:
硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。
我相信,有很多人和我一样,一看到题目时,都是一脸懵逼,然后第一个信念是暴力。但是,毕竟是BZOJ,怎么可能随随便便让你用暴力过呢。于是~~~,我也不知道怎么做。但是,我visti了hzwer大神的博客,才知道此题用的是容斥原理。
什么是容斥原理:
scy给我们讲了一个故事
二愣子和三愣子在我们班;
二愣子打一次架,老师拍一次桌子,
三愣子打一次架,老师也拍一次桌子,
有一天二愣子打了两次架,三愣子打了三次架
有一次是二愣子和三愣子打的,老师本应拍5次桌子,
但应该减一次。
为什么呢,(^_^,给你一个眼神自己体会)
这就是容斥定理。
关于hzwer大神此题的友链:http://hzwer.com/5286.html
附代码:
#include<cstdio>#include<cstring>using namespace std;typedef long long LL;LL c[1100],ans,f[110000],d[1100],s;//一定要用long long,如果不用的话会wavoid dfs(LL x,LL k,LL sum){ if(sum<0)return ; if(x==5) { if(k&1)ans-=f[sum]; else ans+=f[sum]; return ; } dfs(x+1,k+1,sum-(d[x]+1)*c[x]); dfs(x+1,k,sum);}int main(){ LL n; for(int i=1;i<=4;i++)scanf("%lld",&c[i]); memset(f,0,sizeof(f));f[0]=1; for(int i=1;i<=4;i++) for(int j=c[i];j<=100000;j++) f[j]+=f[j-c[i]];//DP预处理 scanf("%lld",&n); for(int i=1;i<=n;i++) { for(int j=1;j<=4;j++)scanf("%lld",&d[j]); scanf("%lld",&s); ans=0; dfs(1,0,s); printf("%lld\n",ans); } return 0;}
1 0
- BZOJ1042【HAOI2008】硬币购物(DP+容斥原理)
- [BZOJ1042][HAOI2008]硬币购物 (DP+容斥原理)
- [BZOJ1042][HAOI2008]硬币购物(dp+容斥原理)
- bzoj1042: [HAOI2008]硬币购物(Dp+容斥原理)
- [BZOJ1042]HAOI2008硬币购物|DP|容斥原理
- 【bzoj1042】 HAOI2008硬币购物 容斥原理+背包dp
- 【bzoj1042】【HAOI2008】【硬币购物】【dp+容斥原理】
- 【BZOJ1042】[HAOI2008]硬币购物【计数DP】【容斥原理】
- BZOJ1042: [HAOI2008]硬币购物 dp+容斥原理
- [DP+容斥] BZOJ1042: [HAOI2008]硬币购物
- bzoj1042 HAOI2008 硬币购物 容斥原理
- bzoj1042: [HAOI2008]硬币购物 容斥原理
- [容斥原理]Bzoj1042 硬币购物[HAOI2008]
- [bzoj1042][HAOI2008]硬币购物 容斥原理
- [BZOJ1042][HAOI2008]硬币购物-容斥原理
- [bzoj1042][DP][容斥原理]硬币购物
- 【bzoj1042】[HAOI2008]硬币购物【dp预处理+容斥】
- BZOJ1042(HAOI2008)[硬币购物]--背包+容斥
- BZOJ2280: [Poi2011]Plot
- C++ 复合类型(三)--数组vector、array
- 单选框(复选框)按钮样式
- Combination Sum
- php的pecl命令安装 mongodb模块的报错解决办法
- [BZOJ1042][HAOI2008]硬币购物 (DP+容斥原理)
- 4. JavaScript Debug Tips
- Kinect V2 开发环境搭建
- 从1 到 n 中 k 出现的次数
- 变量、作用域
- AndroidStudio遇到奇葩SVN问题的解决方案
- leetcode_c++:树:Unique Binary Search Trees II(095)
- Android获取当前所在应用的包名
- hdu5000 Clone(dp+规律)