共有 4 种硬币,面值分别为 c1,c2,c3,c4。
某人去商店买东西,去了 n 次。
对于每次购买,他带了 di 枚 i 种硬币,想购买 s 的价值的东西。
请问每次有多少种付款方法。
数据范围:1<=ci,di,s<=1e5,n<=1000
洛谷题解
只有4种数,可以枚举哪些是超过数量上限的
先用不限制次数的做完全背包,然后枚举超过数量上限的集合做容斥
容斥某个集合时,先将一定会引起超限的量取出来,
这样剩下的任意取也会超限,统计与其对应的超限的方案
复杂度:
没有个数限制的背包即完全背包,先做完全背包
有了di的限制之后,考虑把来自>di的转移给撤销掉,回答完询问之后再加回来
完全背包本质上是对若干个位置做了dp的前缀和,而有个数限制时,相当于前缀和作差
复杂度:
量级上比较极限,但是因为背包转移常数较小,所以可以通过
- #include
- using namespace std;
- const int N=1e5+10;
- typedef long long ll;
- int c[4],d[4],s,n;
- ll dp[N];
- int main(){
- dp[0]=1;
- for(int i=0;i<4;++i){
- scanf("%d",&c[i]);
- for(int j=c[i];j
- dp[j]+=dp[j-c[i]];
- }
- }
- scanf("%d",&n);
- while(n--){
- for(int i=0;i<4;++i){
- scanf("%d",&d[i]);
- }
- scanf("%d",&s);
- int up=1<<4;
- ll ans=0;
- for(int i=0;i
- int cnt=0,now=s;
- for(int j=0;j<4;++j){
- if(i>>j&1){
- cnt++;
- now-=c[j]*(d[j]+1);
- }
- }
- if(now<0)continue;
- if(cnt&1)ans-=dp[now];
- else ans+=dp[now];
- }
- printf("%lld\n",ans);
- }
- return 0;
- }
代码2
- #include
- using namespace std;
- const int N=1e5+10;
- typedef long long ll;
- int c[4],d[4],s,n;
- ll dp[N];
- int main(){
- dp[0]=1;
- for(int i=0;i<4;++i){
- scanf("%d",&c[i]);
- for(int j=c[i];j
- dp[j]+=dp[j-c[i]];
- }
- }
- scanf("%d",&n);
- while(n--){
- for(int i=0;i<4;++i){
- scanf("%d",&d[i]);
- int w=c[i]*(d[i]+1);
- for(int j=N-1;j>=w;--j){
- dp[j]-=dp[j-w];
- }
- }
- scanf("%d",&s);
- printf("%lld\n",dp[s]);
- for(int i=0;i<4;++i){
- int w=c[i]*(d[i]+1);
- for(int j=w;j
- dp[j]+=dp[j-w];
- }
- }
- }
- return 0;
- }
-
相关阅读:
轻量容器引擎Docker基础使用
短视频社交|电影点播平台Springboot+vue+ElementUI前后端分离
java-net-php-python-jspm早教中心系统查重PPT计算机毕业设计程序
SpringBoot教程(十六) SpringBoot集成swagger(全网最全)
方舟生存进化ARK个人服务器搭建教程保姆级
TCP Westwood 更新(性能牛逼 )
RHCSA认证考试---11.查找文件
汽车整车生产厂MES解决方案
MySQL数据库的索引
IPv6进阶:IPv6 过渡技术之 GRE 隧道
-
原文地址:https://blog.csdn.net/Code92007/article/details/105999966
-
最新文章
-
【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
Halo插件:支持GitHub的图床附件策略
电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
软件更好写之后口碑会更重要
大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
Java标签跳转:一个鲜为人知但却很实用的小技巧
多智能体系统论文速读