码迷,mamicode.com
首页 > 其他好文 > 详细

2021.6.8模拟赛

时间:2021-06-11 18:06:14      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:输出   破坏   更新   ati   分组背包   $$   预算   ace   附件   

T1打包

一个二维01背包的板子,状态转移方程$$Dp_{j,k}=max\left \{Dp_{j,k},Dp_{j-Weight_i,k-V_i}+Value_i\right \}$$

T2暗黑破坏神

大概类似于分组背包,开$long\ long$,在更新$Dp$的过程中记录路径,递归输出即可。同时可能会有$Dp$数组有重复的地方,需要当$Dp_{n,P}=Dp_{n,P-1}$时,令$P-1$即可,最后$Print(n,P)$状态转移方程:$$Dp_{i,j}=max\left \{Dp_{i,k},Dp_{i-1,j-k\times p_i.c}+p_i.w_k\right \}$$

inline void Print(int k , int Left)
{
    if(k == 0) 
        return;
    _Print(k - 1 , Left - Number[k][Left] * p[k].c);
    Write(num[k][Left]) , Enter;
}

inline void _Print(int k)
{
    for(int i = 1; i <= m; i++) 
        Write(Dp[k][i]) , Space;
    Enter;
}

T3科技庄园

类似于01背包,注意要二进制优化,数组要开大,状态转移方程$$Dp_j=max\left \{Dp_j,Dp_{j-Weight_i}+Value_i\right \}$$

T4金明的预算方案

无他,惟挨个er特判是否为主件附件耳,状态转移方程$$Dp_j=max\left \{Dp_j,Dp_{j-Weight_i}+Value_i\right \}\\Dp_j=max\left \{Dp_j,Dp_{j-\underline{ }Weight_{i,1}}+Value_i+\underline{ }Value_{i,1}\right \}\\Dp_j=max\left \{Dp_j,Dp_{j-\underline{ }Weight_{i,2}}+Value_i+\underline{ }Value_{i,2}\right \}\\Dp_j=max\left \{Dp_j,Dp_{j-\underline{ }Weight_{i,1}-\underline{ }Weight_{i,2}}+Value_i+\underline{ }Value_{i,1}+\underline{ }Value_{i,2}\right \}$$

 

2021.6.8模拟赛

标签:输出   破坏   更新   ati   分组背包   $$   预算   ace   附件   

原文地址:https://www.cnblogs.com/Tenderfoot/p/14872512.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!