2020.04.152020.04.15NOIPNOIP普及组】模拟赛CC2626 总结

这次比赛我考了240240分,比我预计高了1010,但是下次还要继续努力。

第一题:GrassGrass PlantingPlanting

题目

2020.04.15【NOIP普及组】模拟赛C组26 总结
2020.04.15【NOIP普及组】模拟赛C组26 总结

解题方法

方法11:树形dpdp

dpidp_i表示以ii为根的子树需要使用的最少的草的种类数,fif_i表示ii节点的儿子个数,bib_i表示与ii结点相连的结点数量。
除了根节点以外的其他结点都与bib_i个结点相连,而有一个结点恰好是它的父亲结点。但是由于根结点没有父亲结点,因此
fi={bi1i>1bii=1f_i=\begin{cases} b_i-1&i>1\\ b_i&i=1 \end{cases}
注:这里我们假定11是整棵树的根。
那么可以得到
dpi=maxjsoni(dpj,fi+1,fj+2)dp_i=\max_{j\in son_i}{(dp_j,f_i+1,f_j+2)}
注:sonison_i表示ii的儿子。
上面式子的dpjdp_j表示以jj为根的子树需要使用的最少的草的种类数,fi+1f_i+1表示ii的儿子的数量再加上ii这个结点,fj+2f_j+2表示jj的儿子的数量再加上iijj两个结点。
那么答案就是dp1dp_1
时间复杂度为O(n)O(n)

方法22:数学

bib_i表示与ii结点相连的结点数量。
我们可以发现,答案就是maxi=1nbi+1\max_{i=1}^{n}{b_i}+1
时间复杂度为O(n)O(n)

得分情况

比赛时满分。

第二题:IcyIcy PerimeterPerimeter

题目

2020.04.15【NOIP普及组】模拟赛C组26 总结
2020.04.15【NOIP普及组】模拟赛C组26 总结
2020.04.15【NOIP普及组】模拟赛C组26 总结

解题方法

这道题的解题方法是搜索。

求面积:

其实求面积就是求最大的连通块,我们直接搜索就可以找到了。

求周长:

提出理论

周长就是搜索时越界或点的数量。

证明理论

现在有一个图,如下:
2020.04.15【NOIP普及组】模拟赛C组26 总结
红色区域的周长是44
也就是从当前这个位置往44个方向遍历,然后发现全部都是.‘.’,所以周长为44
这就证明了周长是点的数量。
那么现在有另外一个图,如下:
2020.04.15【NOIP普及组】模拟赛C组26 总结
红色区域的周长是88
也就是77个点加上11个边界。
这就证明了周长是边界加点的数量。
证明结束。
注意:dfsdfs会爆栈,最好用bfsbfs(我就是这样被扣了1010分)!

得分情况

比赛时9090分。
改题后100100分。

第三题:MountainMountain ViewView

题目

2020.04.15【NOIP普及组】模拟赛C组26 总结
2020.04.15【NOIP普及组】模拟赛C组26 总结

解题方法

lil_irir_i分别表示第ii座山的左右端点。

li=xiyi,ri=xi+yil_i=x_i-y_i,r_i=x_i+y_i
那么我们按左端点从小到大排序,然后如果左端点相等,就按右端点从大到小排序。
最后只要判断一下当前这座山是否大于前面的山就行了。
其实思路是贪心。

得分情况

比赛时5050分。
改题后满分。

相关文章: