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_72_json序列化2
#序列化(json是最正规的) import json info={ 'name':'Xue Jingjie', 'age':22 } f=open('第72.text','w') print(jso ...
- Python pep8代码规范
title: Python pep8代码规范 tags: Python --- 介绍(Introduction) 官方文档:PEP 8 -- Style Guide for Python Code 很 ...
- yii2 基本的增删改查
一:添加方法 1.1 使用成员属性的方式 save $user_name = $_POST['user_name']; $password = $_POST['password']; //实例化 $u ...
- 日志收集系统Flume及其应用
Apache Flume概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume 支持定制各类数据发送方,用于收集各类型数据:同时,Fl ...
- JAVA连接数据库,并写入到txt文件
package Hello; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;impor ...
- POJ 2586 贪心+枚举
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15626 Accepted: 78 ...
- A1025 PAT Ranking (25)(25 分)
A1025 PAT Ranking (25)(25 分) Programming Ability Test (PAT) is organized by the College of Computer ...
- HDU 6228 tree 简单思维树dp
一.前言 前两天沈阳重现,经过队友提点,得到3题的成绩,但是看到这题下意识觉得题目错了,最后发现实际上是题目读错了....GG 感觉自己前所未有的愚蠢了....不过题目读对了也是一道思维题,但是很好理 ...
- Gym 100829S_surf 动态规划的优化
题目大意是,非你若干个任务,任务分别对应开始时间.预期收益.持续时间三项指标,让你从中选择一个受益最大的方案(没有开始时间相同的任务). 于是,标准状态转移方程应当为,设DP[K]为选择了前K个任务的 ...
- Spring---浅谈IOC
概念 IOC(Inversion of Control 控制反转)是spring的核心,贯穿始终.所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系. 传统 ...