NOIP2018模拟9.6
第一场模拟。
100+40+50
第二题结论想错了,第三题剪枝没加足。
T1
题目大意:
给出一棵树,每次询问两条路径是否有交点。
题解:
以一为根之后,两条相交的路径必定有某一条的lca在另一条路径上,判一下即可。
T2
题目大意:
给出一棵树,可以任意选择两个点,每个点的距离定为这个点到被选定的两个点中的较短路的长度,求每个点距离的最大值的最小值。
题解:
结论是,最优选择的两点在树的直径上,二分答案再扫一遍即可。
T3
题目大意:
给出一个n*n的网格,要求每行每列填入1~n,要求满足以下条件:
1、每行每列不能出现重复数字。
2、初始给出一个n*n的限制矩阵,权值相同的联通块表示联通块内填入的数字乘积为该权值。
求方案数和最小字典序方案。
题解:
有以下剪枝:
1、有一些位置只能填某一个数,可以预先填入。
2、按块大小 或者 块权值大小 或者 它们的比值大小 或者 块内可选数的个数多少排序,优化搜索顺序。
3、记录一个f数组,f[s]表示用1~n内的数字(可重复)相乘得到s所需要的最小数字个数,以及记录每一块当前的权值乘积,以此剪枝。
大概效果比较玄幻...