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]$
- $g_{i-1} \ge j$:$\dp[i][j] = \dp[i-1][j] \times 2^{\max(0, h_i - h_{i-1})}$
- $g_{i-1} < j$:$\dp[i][j] = \dp[i-1][g_{i-1} + 1] \times 2 \times (2^{c_j} -1) \times 2^{h_{i} - H_{j}}$
边界条件
$\dp[0][0] = (2^{c_0} - 2) \times 2^{h_0 - H_0}$
$\dp[0][j] = 2 \times (2^{c_j} - 1) \times 2^{h_0 - H_j} \quad 1 \le j \le g_0$
$\dp[0][g_0 + 1] = 2$
$\dp[i][g_i + 1]$
- $g_{i-1} \le g_i$:$\dp[i][g_i+1] = 2 \times \dp[i-1][g_{i-1} + 1]$
- $g_{i-1} > g_i$:$\dp[i][g_i + 1] = 2 \times \sum_{ g_i < j \le g_{i-1} + 1} \dp[i-1][j]$
AGC 26 D Histogram Coloring的更多相关文章
- Solution -「AGC 026D」Histogram Coloring
\(\mathcal{Description}\) Link. 有 \(n\) 列下底对齐的方格纸排成一行,第 \(i\) 列有 \(h_i\) 个方格.将每个方格染成黑色或白色,求使得任意完 ...
- AGC 025 B - RGB Coloring
B - RGB Coloring Time limit : 2sec / Memory limit : 1024MB Score : 700 points Problem Statement Taka ...
- AtCoder Grand Contest 026 D - Histogram Coloring
一列中有两个连续的元素,那么下一列只能选择选择正好相反的填色方案(因为连续的地方填色方案已经确定,其他地方也就确定了) 我们现将高度进行离散化到Has数组中,然后定义dp数组 dp[i][j] 表示前 ...
- AGC026D Histogram Coloring
link 题意: 给定n列的方块,第i列高度$h_i$.现在要把它染成红蓝两色,要求满足:对于任意一个$2\times 2$的区域,恰有2个蓝色,2个红色.问方案数. $n\leq 100,h_i\l ...
- AGC 026 C - String Coloring
题面在这里! 比较简单的折半搜索,推一下hash函数,要求正反最后相等就行了. #include<bits/stdc++.h> #define ll unsigned long long ...
- AGC 26 F Manju Game
$\DeclareMathOperator{\sw}{sw}$ $\DeclareMathOperator{\sb}{sb}$ $\DeclareMathOperator{\dp}{dp}$ 用 $\ ...
- 【AtCoder】AGC026 题解
A - Colorful Slimes 2 找相同颜色的一段,然后答案加上段长除2下取整 代码 #include <iostream> #include <cstdio> us ...
- DP 题集 2
关于 DP 的一些题目 String painter 先区间 DP,\(dp[l][r]\) 表示把一个空串涂成 \(t[l,r]\) 这个子串的最小花费.再考虑 \(s\) 字符串,\(f[i]\) ...
- 5.2 CUDA Histogram直方图
什么是Histogramming Histogramming是一种从大的数据集中提取典型特征和模式的方式. 在统计学中,直方图(英语:Histogram)是一种对数据分布情况的图形表示,是一种二维统计 ...
随机推荐
- Python 之继承
概要 如果要修改现有类的行为,我们不必再从头建一个新的类,可以直接利用继承这一功能.下面将以实例相结合介绍继承的用法. 新建一个基类 代码如下: class Marvel(object): num ...
- Jmeter后置处理器
一.什么是关联? 将请求1的输出 作为 请求2 的输入,则称之为关联 例如:“用户登录”请求中服务器返回了token,“查询用户信息”请求需要把token返回给服务器进行验证 二.通过JSON Pat ...
- CUDA的软件体系
CUDA的软件堆栈由以下三层构成:CUDA Library.CUDA runtime API.CUDA driver API,如图所示,CUDA的核心是CUDA C语言,它包含对C语言的最小扩展集和一 ...
- 32-3题:LeetCode103. Binary Tree Zigzag Level Order Traversal锯齿形层次遍历/之字形打印二叉树
题目 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...
- SAP后台JOB的Submit & EVENT JOB
SM35执行一个后台作业后,想及时停止, 运行SM37后,点击ctr + F1停止活动的作业,系统根本就没反应. 解决方法: 第一步:SM50, 找到,Ty.列为BGD的(Background),然后 ...
- SpingBoot之配置文件的值注入问题
我们在这里研究的是以yml配置文件值注入的问题: Person: lastName: 张三 age: 23 boss: false birth: 2018-10-11 maps: {k1: v1,k2 ...
- Zabbix监控oracle各服务器连接数
需求: 根据机器名查询oracle连接数,并通过zabbix进行监控 脚本: [root@rac1 Zabbix_S]# cat get_conns.py#!/usr/bin/python#codin ...
- SpringMVC解决前台传入的数组或集合类型数据
1前台处理如下: $.ajax({ url:"saveMapInfo", type:"POST", dataType:"json", con ...
- linux主机状态检测方式
之前写过一个简单的脚本检测当前网段中主机状态的脚本,内容如下: #! /bin/bash #ping check host status trap "exit" 2 sping() ...
- Linux产生随机数的几种方法
.echo $RANDOM .openssl rand -base64 .date +%n%N .head /dev/urandom |cksum .cat /proc/sys/kernel/rand ...