VJ传送门 简化题意:给定一个长度为\(N\)的数列,\(Q\)个操作: \(1\,x\,a\).将数列中第\(x\)个元素改为\(a\) \(2\,l\,r\).反转子序列\([l,r]\) \(3\,l\,r\,w\).询问区间\([l,r]\)中是否存在若干个数和为\(w\),一个数只能取一次 注意:在整个过程中,在数列中出现过的数的种数不会超过\(K(K \leq 10)\). 注意到最后一个条件很奇怪-- 考虑询问实际上是:最开始给出不超过\(10\)个数\(a_1,...,a_{10…
1042: [HAOI2008]硬币购物 Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s,其中di,s<=100000,tot<=1000 Output 每次的方法数 Sample Input 1 2 5 10 2 3 2 3 1 10 1000 2 2 2 900…
Atcoder 题面传送门 & 洛谷题面传送门 我竟然能独立做出 Ag 的 AGC E,incredible!更新了 Atcoder 做题难度上限( 首先按照套路 Min-Max 容斥,\(ans=\sum\limits_{\varnothing\ne T\subseteq S}(-1)^{|T|-1}\times E(\min(T))\),考虑怎样求这个式子的值.首先我们需要搞清楚 \(E(\min(T))\),假设 \(T\) 中包含下标为 \(x_1,x_2,\cdots,x_m\) 这…
题面传送门 首先看到这种求形如 \(E(\max(T))\) 的期望题,可以套路地想到 Min-Max 容斥 \(\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-1}\min(T)\),将其转化为容易计算的 \(E(\min(T))\) 进行计算. 不过这题有些不同的一点是我们要求的是第 \(k\) 大而不是最大值,无法直接 Min-Max,这时就要用到一个叫扩展 Min-Max 的东西了,首先抛出式子:\(\max_k(S)=\sum\limits_{T…
牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(998244353\)取模. 两种装箱方案不同当且仅当两种方案中存在一颗编号相同的宝石装在不同编号的箱子中. \(n\le 8000\) 题解: 直接计算肯定不好做,考虑用容斥来做 令\(g_x\)为\(n\)个宝石中\(x\)个宝石放在不合法的位置的方案数 那么我们的答案可以用容斥表示为\(\sum_{i=…
P1450 [HAOI2008]硬币购物 暴力做法:每次询问跑一遍多重背包. 考虑正解 其实每次跑多重背包都有一部分是被重复算的,浪费了大量时间 考虑先做一遍完全背包 算出$f[i]$表示买价值$i$东西的方案数 蓝后对每次询问价值$t$,减去不合法的方案 $c_1$超额方案$f[t-c_1*(d_1+1)]$,表示取了$d_1+1$个$c_1$,剩下随便取的方案数(这就是差分数组) 如法炮制,减去$c_2,c_3,c_4$的超额方案数 但是我们发现,我们多减了$(c_1,c_2),(c_1,c…
题目链接 \(Description\) 给定一棵\(n\)个点的树.将这\(n\)个点两两配对,并对每一对点的最短路径染色.求有多少种配对方案使得所有边都至少被染色一次. \(n\leq5000\). \(Solution\) 考虑容斥.令边集\(E\)的子集\(S\in E\),\(f(S)\)表示使得\(S\)中所有边都不被染色的配对方案数(其余边任意),则\(Ans=\sum_{S\in E}(-1)^{|S|}f(S)\). 如果确定边集\(S\),我们可以求\(f(S)\).设\(S…
题意:硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. 思路:这么老的题,居然今天才做到...背包的复杂度是比较高的. 加上tot次询问会爆炸.能不能预处理,然后容斥得到答案呢?      先求一个完全背包,求出方案数,dp[].      然后对于具体的询问,减去不合法的情况 .      对于c[i],它发贡献是dp[S-c[i]*(d[i]+1)];      那么会重复减,所以又…
Luogu-P1450 [HAOI2008]硬币购物-完全背包+容斥定理 [Problem Description] 略 [Solution] 上述题目等价于:有\(4\)种物品,每种物品有\(d_i\)个,且每种物品的体积为\(c_i\),问有多少种方法装满容量为\(s\)的背包?可以很容易想到跑多重背包即可,但是发现复杂度为\(O(4V\cdot n)\).不可行. 题目要求的东西也等价于求以下等式有多少组满足条件的解: \[ c_1\cdot x_1+c_2\cdot x_2+c_3\cd…
题意: 4种硬币买价值为V的商品,每种硬币有numi个,问有多少种买法 1000次询问,numi<1e5 思路: 完全背包计算出没有numi限制下的买法, 然后答案为dp[V]-(s1+s2+s3+s4)+(s12+s13+s14+s23+s24+s34)-(s123+s124+s134+s234)+s1234 其中s...为某硬币超过限制的方案数 求s的方法: 如s1:硬币1超过限制,就是硬币1至少选了num1+1个,其他随便,所以s1=dp[V-c1*(num1+1)] 同理s12 = dp…