NOIP模拟题,请求解答

2025-04-29 16:27:29
推荐回答(1个)
回答1:

试题一新的开始
【题目简述】
有n 个点,你可以在当前点花一定费用建造发电站或者将其与已经通电的点用一定的
费用使它们连通,求让所有点通电的最少费用。
【试题分析】
题目很像一个最小生成树问题,但又不同于一般的最小生成树,因为某些点可以不与其
他点相连而单独建造发电站。那么我们是否能将这个问题转化为最小生成树呢?
答案显然。
我们可以新建一个0 号节点,并与1~n 号点相连,边权为当前节点建造发电站的费用,
这样便解决了只建电站而不与其他点连边的问题,那么我们对于这个新的图做一次最小生成
树便能得到答案了。
标程是用Kruskal 算法,时间复杂度为O(M*logM+N), M 为边数。

试题二工业时代
【题目简述】
给出n*m 网格中每个格子的NEW 矿和BE 矿的数量,BE 矿必须由右向左运输,NEW
矿必须由下向上允许。每个格子只能建东西向或者南北向的管道,且管道不能拐弯。要求收
集到的NEW, BE 矿总量尽量大。
【试题分析】
这个题可以用动态规划来解决。
令A[ i , j ] 为第j 列1~i 个格子New 矿总和, B[ i , j ]为第i 行前j 个格子Be 矿总和。
F[ i, j, 0] 定义为以(i, j) 为右下角,第( i , j )号格子建立BE 矿管道的最大采矿量。
F[ i, j, 1] 定义为以(i, j) 为右下角,第( i , j )号格子建立NEW 矿管道的最大采矿量。
那么可得到如下转移方程:
F[i,j,0] := max{ F[ i-1 , j , 0 ], F[ i-1, j, 1 ]} + B[ i, j ];
F[i,j,1] := max{ F[ i , j-1 , 0 ], F[ i, j-1, 1 ]} + A[ i, j ];
而最终答案便是max{F[ n, m, 0 ], F[ n, m, 1 ]}。
时间复杂度: O(n*m)。

问一下,你是哪里弄到YYF神牛出的试卷的。