2022年 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)
\(D\ \ \ Strange\ Fractions\)
因为\(a,b\)一定是互质的,所以\(ab=q\),所以将\(q\)分解质因数然后分配一下质因子即可。即\(p_{i}^{t_i}\)只可能属于\(a,b\)中的其中一个,所以枚举一下即可。
\(E \ \ \ Strange\ Integers\)
签到题。贪心。
\(G\ \ \ Edge\ Groups\)
树形DP+组合数学。
分当前子树\(u\)的子节点\(v\)的有效边数是奇数还是偶数来讨论,整体不难。
待补。
\(H\ \ \ Life\ is\ a\ Game\)
Kruskal重构树的模板题。求路径上最大边权的最小值,就是最小瓶颈路。新建\(n-1\)个点连接两个还未连通的集合,点权表示原图的边权,然后询问的时候做一遍\(LCA\)即可。
待补。
\(I\ \ \ Steadily\ Growing\ Steam\)
变形版\(01\)背包,要滚动数组+下标平移。
具体来说有五种情况。
一个01背包问题的变形
状 态 表 示 : f [ i ] [ j ] [ k ] 表 示 从 前 i 张 牌 中 , 最 多 使 用 j 次 技 能 , 两 组 牌 的 t [ i ] 和 之 差 为 k 时 的 s [ i ] 之 和 最 大 为 多 少 状态表示:f[i][j][k]表示从前i张牌中,最多使用j次技能,两组牌的t[i]和之差为k时的s[i]之和最大为多少状态表示:f[i][j][k]表示从前i张牌中,最多使用j次技能,两组牌的t[i]和之差为k时的s[i]之和最大为多少
因 为 k 表 示 的 差 , 所 有 k 的 范 围 理 论 上 是 [ − 2600 , 2600 ] , 但 是 数 组 下 标 又 不 能 有 负 数 , 因 此 我 们 可 以 让 k = k + 2600 , 因为k表示的差,所有k的范围理论上是[-2600,2600],但是数组下标又不能有负数,因此我们可以让k=k+2600,因为k表示的差,所有k的范围理论上是[−2600,2600],但是数组下标又不能有负数,因此我们可以让k=k+2600,这 样 k 的 范 围 就 变 为 了 [ 0 , 5200 ] 。 问 题 解 决 。 这样k的范围就变为了[0,5200]。问题解决。这样k的范围就变为了[0,5200]。问题解决。
状 态 转 移 : 本 题 中 每 次 转 移 会 有 5 钟 状 态 状态转移:本题中每次转移会有5钟状态状态转移:本题中每次转移会有5钟状态
1 、 不 选 第 i 张 牌 : f [ i ] [ j ] [ k ] = f [ i − 1 ] [ j ] [ k ] 1、不选第i张牌:f[i][j][k]=f[i-1][j][k]1、不选第i张牌:f[i][j][k]=f[i−1][j][k]2 、 选 择 第 i 张 牌 放 入 a 组 , 且 不 使 用 技 能 : f [ i ] [ j ] [ k ] = m a x ( f [ i ] [ j ] [ k ] , f [ i ] [ j ] [ k − t [ i ] ] + v [ i ] ) 2、选择第i张牌放入a组,且不使用技能:f[i][j][k]=max(f[i][j][k],f[i][j][k-t[i]]+v[i])2、选择第i张牌放入a组,且不使用技能:f[i][j][k]=max(f[i][j][k],f[i][j][k−t[i]]+v[i])
3 、 选 择 第 i 张 牌 放 入 b 组 , 且 不 使 用 技 能 : f [ i ] [ j ] [ k ] = m a x ( f [ i ] [ j ] [ k ] , f [ i ] [ j ] [ k + t [ i ] ] + v [ i ] ) 3、选择第i张牌放入b组,且不使用技能:f[i][j][k]=max(f[i][j][k],f[i][j][k+t[i]]+v[i])3、选择第i张牌放入b组,且不使用技能:f[i][j][k]=max(f[i][j][k],f[i][j][k+t[i]]+v[i])
4 、 选 择 第 i 张 牌 放 入 a 组 , 且 使 用 技 能 : f [ i ] [ j ] [ k ] = m a x ( f [ i ] [ j ] [ k ] , f [ i ] [ j − 1 ] [ k − 2 ∗ t [ i ] ] + v [ i ] ) 4、选择第i张牌放入a组,且使用技能:f[i][j][k]=max(f[i][j][k],f[i][j-1][k-2*t[i]]+v[i])4、选择第i张牌放入a组,且使用技能:f[i][j][k]=max(f[i][j][k],f[i][j−1][k−2∗t[i]]+v[i])
5 、 选 择 第 i 张 牌 放 入 b 组 , 且 使 用 技 能 : f [ i ] [ j ] [ k ] = m a x ( f [ i ] [ j ] [ k ] , f [ i ] [ j − 1 ] [ k + 2 ∗ t [ i ] ] + v [ i ] ) 5、选择第i张牌放入b组,且使用技能:f[i][j][k]=max(f[i][j][k],f[i][j-1][k+2*t[i]]+v[i])5、选择第i张牌放入b组,且使用技能:f[i][j][k]=max(f[i][j][k],f[i][j−1][k+2∗t[i]]+v[i])
————————————————
版权声明:本文为CSDN博主「lwz_159」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/li_wen_zhuo/article/details/121708671
\(K\ \ \ Circle\ of\ Life\)
构造题。题面很长,但是想到了就不难。
待补。
\(M\ \ \ Harmony\ in\ Harmony\)
概率题。情况除了\(\frac{1}{n^2}\)外还有别的构造,还需再想。
待补。
总结: 题面长的题目要敢于去开题和思考,有一些构造说不定就可以做出来了,题目短的不一定就好做。