这次比赛的题我没写,简单浏览了一下,前六题是很基础的题。然后三题是图论的题,第一个重码力,后两个重思维。最后一个是防AK的探究性数论题,可以忽略掉。具体代码可以通过题库找到该题,然后查看别人提交的代码。

QQ图片20231014203213.png

QQ图片20231014203303.png

QQ图片20231014203307.png

下面只给出了各个题的思路,看了思路还有不懂的同学可以来问我。



A:所有人可以同时移动,因此可以枚举所有人从起点到终点的曼哈顿距离,求最大即可。

B:排个序,直接计算一下,注意答案为整数,可以使用ceil函数向上取整一下。

C:图形题,直接模拟。

D:答案直接取 b 减去 前a和后b的交集即可。

E:二分模板题,二分答案即可。最后判一下是否满足方程。

F:排列组合题。问题要求连续两个格子颜色相邻的方案数,反向思考,总方案数减去任意两个相邻的格子不同的数量就是答案。
公式 m^n - m*(m-1)^(n-1) ,注意快速幂的计算和取模,取模有个技巧就是这个答案可能为负数,因此答案需要+MOD然后再取模一次。

G:BFS题,时间复杂度q*n,不要有多余的操作,容易超时。

H:答案的路径一定是在给定的这个图中的,也就是说在最短路径的基础上找最大的一颗树,最短的边的边权,多条取最大这里好好理解一下。
其实就是找最大生成树。按照权值从大到小排序,然后克鲁斯卡尔即可。

I:只有两个点x坐标相等或y坐标相等才能到达。这样可以产生多个集合,其中集合与集合直接不能到达就需要添加一个点,添加点的数量就等于集合的数量-1。两个点x或y坐标相同就连边,并查集找一下集合数量即可。

J:参考博客:http://www.cxb520.cn/sf/475.html