• AGC 26 D Histogram Coloring


    题目

    将柱子的高度离散化$DeclareMathOperator{dp}{dp}$

    设第 $i$ 根柱子实际高度是 $h_i$,离散化之后的高度是 $g_i$;第 $i$ 高的高度是 $H_i$,第 $i$ 段的长度为 $c_i$,即 $c_0 = H_0,c_i = H_i - H_{i-1} quad i ge 1$

    设有三根柱子,高度分别为 $1, 4, 3$,则 $h = [1, 4, 3]$,$g = [0, 2, 1]$,$ H = [1, 3, 4]$,$c = [1, 2, 1]$ 。

    $dp[i][j]$ 表示第 $i$ 根柱子上「上下相邻的两块同色」最早出现在第 $j$ 段的方案数。

    第 $i$ 根柱子上未出现相邻两块同色的情况用状态 $dp[i][g_i+1]$ 表示

    转移方程

    $dp[i][j]$

    1. $g_{i-1} ge j$:$dp[i][j] = dp[i-1][j] imes 2^{max(0, h_i - h_{i-1})}$
    2. $g_{i-1} < j$:$dp[i][j] = dp[i-1][g_{i-1} + 1] imes 2 imes (2^{c_j} -1) imes 2^{h_{i} - H_{j}}$

    边界条件

    $dp[0][0] = (2^{c_0} - 2) imes 2^{h_0 - H_0}$

    $dp[0][j] = 2 imes (2^{c_j} - 1) imes 2^{h_0 - H_j} quad 1 le j le g_0$

    $dp[0][g_0 + 1] = 2$

    $dp[i][g_i + 1]$

    1. $g_{i-1} le g_i$:$dp[i][g_i+1] = 2 imes dp[i-1][g_{i-1} + 1]$
    2. $g_{i-1} > g_i$:$dp[i][g_i + 1] = 2 imes sum_{ g_i < j le g_{i-1} + 1} dp[i-1][j]$
  • 相关阅读:
    C语言计时
    time模块
    大端对齐 和小端对齐
    python之生成器与迭代器
    python之字符串反转
    简单排序
    Python学习笔记——切片
    Python学习笔记——函数(二)
    Python学习笔记——函数(一)
    Python学习笔记——字典(dict)
  • 原文地址:https://www.cnblogs.com/Patt/p/9312043.html
Copyright © 2020-2023  润新知