2020.06.06 2020.06.06 2020.06.06【 N O I P NOIP NOIP普及组】模拟赛 C C C组 37 37 37 总结
这次比赛我考了 300 300 300分,第一题没有考虑到一个地方,第三题不知道为什么有一个数据点时间超限。
第一题:打牌
解题方法
这道题的方法是贪心。
我们在第一次出一个最小的牌,然后每一次按规则出牌,当不能出了就出一个最小的。
得分情况
比赛时 16.7 16.7 16.7分。
第二题:寻找星座
解题方法
这道题的方法是暴力。
我们选取一个标准进行尝试就行了,每一次看一看这个标准和是否满足其他的星座,如果符合就输出。
得分情况
比赛时满分。
第三题:烤饼干
解题方法
暴力 d f s dfs dfs
每一次
d
f
s
dfs
dfs当前行是否需要翻转,如果需要就翻转,然后把全部行都枚举过之后,贪心每一列
0
0
0和
1
1
1的个数最大的值并累加进答案,最后与原来的答案取一个最大值就行了。
时间复杂度为
O
(
2
n
m
)
O(2^nm)
O(2nm),可以过。
状压 d p dp dp
不懂。
得分情况
比赛时 83.3 83.3 83.3分。
第四题:坐船旅行
解题方法
这道题的方法是变版 f l o y d floyd floyd或者 s p f a spfa spfa。
f l o y d floyd floyd
每一次我们发现需要是更改的话就直接将以
a
,
b
a,b
a,b为中间点的长度更新。
也就是
f
i
,
j
=
min
i
=
1
n
min
j
=
1
n
f
i
,
a
+
f
a
,
b
+
f
b
,
j
\begin{aligned}f_{i,j}=\min_{i=1}^{n}{\min_{j=1}^{n}{f_{i,a}+f_{a,b}+f_{b,j}}}\end{aligned}
fi,j=i=1minnj=1minnfi,a+fa,b+fb,j。
注意每一次要更新
f
i
,
j
,
f
j
,
i
f_{i,j},f_{j,i}
fi,j,fj,i。
因为可能没有更新到。
时间复杂度为
O
(
k
n
2
)
O(kn^2)
O(kn2)。
s p f a spfa spfa
直接每一次做一遍 s p f a spfa spfa就可以了。
得分情况
比赛时满分。