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所需要的最小数字个数,以及记录每一块当前的权值乘积,以此剪枝。

大概效果比较玄幻...

posted @ 2018-09-10 21:00  praying_cqf  阅读(127)  评论(0编辑  收藏  举报