简化版题面:
有 \(c\) 个豆荚,共 \(n\) 颗豆子,每颗豆子都有自己的重量,现在需要将给豆子设定为(黄色/绿色,圆粒/皱粒),要求满足以下条件:
给定这四种性状的阀值 \(C0,C1,D0,D1\),要求为这种性状的豆子重量和不能超过该阀值。
与此同时,这 \(n\) 颗豆子中存在 \(k\) 颗顽皮豆,顽皮豆都有自己的想法,比如拒绝成为(黄圆/黄皱/绿圆/绿皱)。
同一个豆荚里的豆子必须同时为黄色或同时为绿色。
求有多少种给豆子设定的方案,答案对 \(998244353\) 取模。
本题只考查了联赛级别的知识点,好瓶!XD
纯暴力。
设 \(f_{i,0/1,x,y,z}\) 为第 \(i\) 个学校选择的是红/蓝阵营,前三位导师分别有 \(x,y,z\) 个选手的方案数,然后枚举每个学校进行转移即可。复杂度 \(O(nM^3)\),预计得分 \(30pts+\)。
其实并不需要设三维的 \(\text{dp}\),只需设状态 \(f_{i,0/1,x,y}\) 表示第 \(i\) 个学校选择的是红/蓝阵营,选择蓝阵营的有 \(x\) 人,鸭派系的有 \(y\) 人,因为一个选手必定属于其中一个阵营/派系,复杂度 \(O(nM^2)\),预计得分 \(50pts+\)。
考虑 \(k=0\) 的情况。
此时任何学校都没有阵营的限制,可以发现先确定阵营再确定派系,与同时确定阵营与派系(即直接确定某位导师)所得到的方案数是等价的。(类似于生物里的两对相对性状?)
设 \(f_{i,1/0,j}\) 为第 \(i\) 个学校选择红/蓝阵营,且前 \(i\) 个学校选择蓝阵营的有 \(j\) 个人的方案数,\(g_{i,j}\) 为前 \(i\) 个学校选择鸭派系的有 \(j\) 个人的方案数,那么分别计算出来后,进行合并,即总方案数为
其实本质上就是背包及背包合并。
复杂度 \(O(nM)\),结合前面的算法可以拿到 \(70pts+\)。
随便写写暴力就70pts了
原文:https://www.cnblogs.com/newbielyx/p/13150337.html