【省选模拟】20/02/08

题目 pdf

  • T 1 : T1: 题意,在一棵 n n 个点的树上放 m m 个男的 m m 个女的,两两配对,最优配对方案为距离总和的最大值,问这个值的期望
    一个部分分是只有一条权值 > 0 >0 的边,那么这种情况假设左边放 x , y x,y 个男女,那么贡献就是
    ( m i n ( x , m y ) + m i n ( y , m x ) ) w a y s (min(x,m-y)+min(y,m-x))*ways
    考虑扩展到多条边,是否可以让每一条边贡献达到最大,结果发现一定存在一种构造方案满足条件
    于是对每一条边算一次贡献就可以了,讨论一些 m i n min 的取法可以做到 O ( n m ) O(nm)
    C o d e Code

  • T 2 : T2: 首先两个相邻的作为一个断点,可以对每一段分别考虑,同时将串倍长于是只需要考虑去掉一个前缀一个后缀,转换思路,变成在中间选择一段合法的
    考虑什么样的不合法,就是对于一个前缀 [ 1 , k ] [1,k] 与一个后缀 [ n k + 1 , n ] [n-k+1,n] 相同,这个就是 k m p kmp n x t nxt ,于是就做完了?复杂度 O ( n ) O(n)
    C o d e Code

  • T 3 : T3: 考场打的 n 2 l o g ( n ) n^2log(n) 被卡常,大概就是枚举上下边界, s e t set 存一下中间的点二分找左右边界
    正解:注意到一个性质就是答案至少有 m a x ( W , H ) 2 + 2 max(W,H)*2+2 ,所以说最后选出来的矩形一定过 y = H / 2 y=H/2 x = W / 2 x=W/2 两条直线,于是我们分别考虑,强制其过两条直线
    y y 排序,枚举上端点 y 2 y_2 ,维护每一个下端点的 y 1 + x 2 x 1 -y_1+x_2-x_1 ,那么最后答案就是下面的一个 m a x max ,发现每个点的左右边界会被一个单调栈框住,以 W / 2 W/2 左右分别做单调栈线段树动态处理入栈时的贡献,最巧妙的地方还是强制它过 W / 2 W/2 于是就可以对两边分别维护了
    C o e d Coed

发布了634 篇原创文章 · 获赞 98 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/sslz_fsy/article/details/104236518