2021.6.8模拟赛
Posted Tenderfoot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.6.8模拟赛相关的知识,希望对你有一定的参考价值。
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模拟赛的主要内容,如果未能解决你的问题,请参考以下文章
当我想模拟数据并测试 UI 片段时,doNothing() 不起作用