首页 > 编程知识 正文

容斥原理的简单理解,容斥原理视频讲解

时间:2023-05-05 23:48:40 阅读:108377 作者:878

容斥原理定义了容斥原理,就是对于一个集合,必须求他们的并集。

来自wiki

二解问题允许原理多重背包问题模板问题的优化

优化方向:知道单品的全部价值,多次调查,每次的单品数量不同,背包容量也不同。 此时,直接使用多重背包的一般解法(使用二进制转换为01背包问题,或者使用单调队列优化的话……t会掉下来。 因此,要利用前面的状态,可以使用排斥原理进行优化

初期,将其作为完整背包处理,得到物品数量没有限制时的所有可能数量。 利用接受原理减去超过可行数的解。 可以得到最终的数量

code # include iostream # definen 10010 # definelllonglongusingnamespacestd; ll f[N]={1ll}; int cnt,c[5],d[5],n,s,value[N]; void Pre () for ) intI=1; i=4; I ) for(intj=c[I]; j=N; j ) f(j )=f(j-c(I ) ); //完整背包处理inlineintnum(intid ) ) returnc[id]* ) d[id]1); //超过的体积int main (返回) ) for(intI=1; i=4; I ) scanf('%d ',c[i]; Pre (); scanf('%d ',n ); wile(n----) ) for ) intI=1; i=4; I ) scanf('%d ',d[i]; scanf('%d ',s ); ll ans=f[s]; for(intj=1; j=15; j({intnow=s,k=0; for(intz=j,Num=1; z; z=1,num(if ) z1 ) k ^=1,now-=num ); if(now=0) k? ans -=f[now]:ans =f[now]; //二进制枚举printf(%lld(n ),ans ); }返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。