1042: [HAOI2008]硬币购物 DP+容斥原理
来源:互联网 发布:js正则密码区分大小写 编辑:程序博客网 时间:2024/06/06 04:23
果然高一抄代码抄多了,做了题和没做一样。我太弱啦。
我们考虑硬币没有限制的情况,令f[i]表示面值为i的方案数,则f[i]=sigma(f[i-c[k]],k∈[1,4])。
如果有限制的话,ans=没有限制的方案数-超过限制的方案数。
超过限制的方案数可以用容斥原理来做。
#include<iostream>#include<cstdio>#define MAXN 100000#define ll long long using namespace std;int c[5],d[5];ll ans,f[100005];int n;inline int read(){ int x=0;char ch=getchar(); while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x;}void dfs(int x,int k,int 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(){ c[1]=read(); c[2]=read(); c[3]=read(); c[4]=read(); n=read(); f[0]=1; for (int i=1;i<=4;i++) for (int j=c[i];j<=MAXN;j++) f[j]+=f[j-c[i]]; for (int i=1;i<=n;i++) { d[1]=read(); d[2]=read(); d[3]=read(); d[4]=read(); int s=read(); ans=0; dfs(1,0,s); printf("%lld\n",ans); } return 0;}
0 0
- 1042: [HAOI2008]硬币购物(dp+容斥原理)
- 1042: [HAOI2008]硬币购物 DP+容斥原理
- 【bzoj 1042】 [HAOI2008] 硬币购物(dp+容斥原理)
- BZOJ 1042:[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+容斥原理)
- bzoj1042: [HAOI2008]硬币购物(Dp+容斥原理)
- [DP+容斥] BZOJ1042: [HAOI2008]硬币购物
- bzoj1042 HAOI2008 硬币购物 容斥原理
- bzoj1042: [HAOI2008]硬币购物 容斥原理
- [容斥原理]Bzoj1042 硬币购物[HAOI2008]
- [bzoj1042][HAOI2008]硬币购物 容斥原理
- coredata简单使用
- Android定制实现上网限制
- js 字符串
- 如何让主界面NavigationBar隐藏,而push到的下一个界面显示NavigationBar?
- android 使用内容提供者获取手机联系人
- 1042: [HAOI2008]硬币购物 DP+容斥原理
- oracle中常用函数WM_CONCAT(行转列)
- Drupal8开发教程:模块开发——创建新页面
- 一个Label上面显示两种不的字体
- 【BZOJ4407】于神之怒加强版
- 关于苹果开发证书失效的解决方案(2016年2月14日Failed to locate or generate matching signing assets)
- 使用 Spring Boot 快速构建 Spring 框架应用
- Ubuntu环境下安装Open JDK
- 循环赛日程表