zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 196 A-F题解

    AC代码

    A - Difference Max

    输出(b - c)

    B - Round Down

    遍历字符串,若遇到.将其改为

    C - Doubled

    易得:前半部分的值不会超过(10^6)

    所以可以枚举前半部分的值,再判断是否满足条件。

    D - Hanjo

    因为(HW le 16),比较小,所以直接递归暴力求解。

    复杂度分析

    如果面积为2的方块都确定了,那么面积为1的方块的放置方式也就确定了。

    若不考虑面积为2的方块重叠的case,那么可以从(HW)个各自中选择(A)个作为方块的左上角,一共(C_{HW}^{A})种方法,再加上每个方块有两种可能的朝向,一共(2^A)中方法。合并在一起一共(2^AC_{HW}^{A})种放置方法。

    若考虑方块重叠,放置方法会更少。

    由此,复杂度至多为(O(2^AC_{HW}^{A})),在这题的数据量上已经足够了。

    E - Filters

    首先,每种操作都可以按下列方式转化成(f(x) = min(c, max(b, x + a)))的形式。

    • (t_i = 1: f(x) = x + a_i = min(infin, max(-infin, x + a_i)))
    • (t_i = 2: f(x) = max(a_i, x) = min(infin, max(a_i, x + 0)))
    • (t_i = 3: f(x) = min(a_i, x) = min(a_i, max(-infin, x + 0)))

    其次,可以推导出:若(f,g)都为具备上述形式的函数,那么(g(f(x)))也为满足上述形式的函数。

    由此,(f_N( dots f_2(f_1(x_i)) dots ))也为满足上述形式的函数,每次按(t_i)的不同更新参数(a, b, c)即可,每次更新的时间复杂度为(O(1))。具体如下:

    • (f_1(x) = min(c_1, max(b_1, x + a_1)))
    • (f_2(x) = min(c_2, max(b_2, x + a_2)))
    • (f_2(f_1(x)) = min(min(c_2, max(b_2, c_1 + a_2)), max(max(b_2, min(c_1 + a_2, b_1 + a_2)), x + (a_1 + a_2))))

    现在,(f_N( dots f_2(f_1(x_i)) dots ) = min(c, max(b, x + a)))然后就可以(O(1))回答每一个询问,总的复杂度是(O(N + Q))

    F - Substring 2

    (S_i = T_j),则两者匹配的代价为0,反之为1。其实就是异或操作。

    (T)最后成了(S)从下标(i)开始的字串,则需要的操作次数

    [egin{align} cost_i &= sum_{j = 0}^{|T| - 1} S_{i + j} oplus T_j \ &= sum_{j = 0}^{|T| - 1} (1 - S_{i + j})T_j + sum_{j = 0}^{|T| - 1} S_{i + j}(1 - T_j) \ &= sum_{j = 0}^{|T| - 1} S_{i + j} + sum_{j = 0}^{|T| - 1} T_j - 2sum_{j = 0}^{|T| - 1} S_{i + j}T_j end{align} ]

    式子的前两项都比较容易计算,而第3项长得很像卷积的式子,也确实可以通过简单的换元变成卷积。

    (R^prime = reverse(T)),则有

    [egin{align} C_i &= sum_{j = 0}^{|T| - 1} S_{i + j}T_j \ &= sum_{j = 0}^{|T| - 1} S_{i + j}R_{|T| - 1 - j} \ &= sum_{x + y = i + |T| - 1} S_xR_y end{align} ]

    (C_i)可以用FFT在(O(n log_n))的时间内计算。特别地,(C_{i - |T| + 1})(cost_i)的第3项值。

    计算出所有的(cost_i)取最小即可。

  • 相关阅读:
    Git 基础
    SharePoint 2013 对象模型操作"网站设置"菜单
    SharePoint 2013 隐藏部分Ribbon菜单
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 设置自定义布局页
    SharePoint 2013 "通知我"功能简介
    SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
    SharePoint 禁用本地回环的两个方法
  • 原文地址:https://www.cnblogs.com/zengzk/p/14579669.html
Copyright © 2011-2022 走看看