首页 > 其他 > 详细

[十二省联考2019]皮配 - 背包、dp

时间:2020-06-17 09:23:41      阅读:106      评论:0      收藏:0      [点我收藏+]

Description

题面

简化版题面:

\(c\) 个豆荚,共 \(n\) 颗豆子,每颗豆子都有自己的重量,现在需要将给豆子设定为(黄色/绿色,圆粒/皱粒),要求满足以下条件:

  1. 给定这四种性状的阀值 \(C0,C1,D0,D1\),要求为这种性状的豆子重量和不能超过该阀值。

  2. 与此同时,这 \(n\) 颗豆子中存在 \(k\) 颗顽皮豆,顽皮豆都有自己的想法,比如拒绝成为(黄圆/黄皱/绿圆/绿皱)。

  3. 同一个豆荚里的豆子必须同时为黄色同时为绿色

求有多少种给豆子设定的方案,答案对 \(998244353\) 取模。

Solution

本题只考查了联赛级别的知识点,好瓶!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\) 个人的方案数,那么分别计算出来后,进行合并,即总方案数为

\[\sum \limits_{i=S-C_1}^{C_0} \sum \limits_{i=D_1}^{D_0} (f_{n,0,i} + f_{n,1,i}) \times g_{n,j} \]

其实本质上就是背包及背包合并

复杂度 \(O(nM)\),结合前面的算法可以拿到 \(70pts+\)

代码

随便写写暴力就70pts了

Code

[十二省联考2019]皮配 - 背包、dp

原文:https://www.cnblogs.com/newbielyx/p/13150337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!