CF 1114D(538,div2) Flood Fill
https://codeforces.com/contest/1114/problem/D
题目
给一串数字,首先选择一个位置,类似于画图,然后每一轮按照以下步骤:
- 可以将这个位置所在的连通块改成其他数字
问最少几步可以把所有数字变成一样的
题解
设dp[l][r][0/1]为把[l,r)范围变成和最左侧或最右侧数字一样需要的最少步数,
可以通过数学归纳证明
- 选择什么数字不重要,即使选择是中间的数字,步数一样不会变小
要注意的是有8种转移
$2\times2+2\times2$
其中有4种转移肯定不是最优,因为选择的点的位置不能变。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define MAXN 5007
int c[MAXN];
int dp[MAXN][MAXN][2];
int main() {
int n; scanf("%d", &n);
for(int i=0; i<n; i++) {
scanf("%d", &c[i]);
}
for(int i=0; i<n; i++) {
dp[i][i][0]=dp[i][i][1]=dp[i][i+1][0]=dp[i][i+1][1]=0;
}
for(int d=2; d<=n; d++) {
for(int l=0; l+d<=n; l++) {
int r=l+d;
dp[l][r][0]=dp[l][r][1]=0x3f3f3f3f;
const int cs[][2]={{l+1, r-1},{l, r-2}};
for(int k=0; k<2; k++) {
dp[l][r][0] = min(dp[l][r][0], dp[l+1][r][k]+int(c[cs[0][k]]!=c[l]));
dp[l][r][1] = min(dp[l][r][1], dp[l][r-1][k]+int(c[cs[1][k]]!=c[r-1]));
}
}
}
printf("%d\n", min(dp[0][n][0], dp[0][n][1]));
return 0;
}
CF 1114D(538,div2) Flood Fill的更多相关文章
- CF 538 D. Flood Fill 递归 区间DP
link:https://codeforces.com/contest/1114/problem/D 题意: 给定一个数组,有不同的颜色,你可以从任意一个位置开始,改变颜色,相邻的是同一种颜色的位子的 ...
- CF 1114 D. Flood Fill
D. Flood Fill 链接 题意: 一个颜色序列,每个位置有一个颜色,选择一个起始位置,每次可以改变包含这个位置的颜色段,将这个颜色段修改为任意一个颜色, 问最少操作多少次.n<=5000 ...
- Codeforces Round #538 (Div. 2) D. Flood Fill 【区间dp || LPS (最长回文序列)】
任意门:http://codeforces.com/contest/1114/problem/D D. Flood Fill time limit per test 2 seconds memory ...
- 图像处理之泛洪填充算法(Flood Fill Algorithm)
泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...
- 图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能
泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...
- [LeetCode] Flood Fill 洪水填充
An image is represented by a 2-D array of integers, each integer representing the pixel value of the ...
- [Swift]LeetCode733. 图像渲染 | Flood Fill
An image is represented by a 2-D array of integers, each integer representing the pixel value of the ...
- LeetCode刷题 Flood Fill 洪水填充问题
An image is represented by a 2-D array of integers,each integers,each integer respresenting the sta ...
- [LeetCode&Python] Problem 733. Flood Fill
An image is represented by a 2-D array of integers, each integer representing the pixel value of the ...
随机推荐
- tensorflow处理mnist(二)
用卷积神经网络解决mnist的分类问题. 简单的例子 一行一行解释这个代码. 这个不是google官方的例子,但是很简洁,便于入门.tensorflow是先定义模型,最后赋值,计算.为了讨论问题方便, ...
- JsonClassGenerAtor 使用json字符串生成对象
https://pan.baidu.com/s/1Mz1xB6L3blqrRiRAMuJpIg 链接
- unity3d 随机添加树木
开放世界随机地图才是最重要的.. 随机生成树木 Terrain.terrainData //获取地形设置 terrainData.treePrototypes {get;set;} //获取或设置树木 ...
- [vue]初探vue生态核心插件Vuex
为什么会有 Vuex 这个东西 ? 一个应用内部运行的机制,事件 -> 状态 -> UI,我们的前端常常会因为这两个过程而产生大量代码,从而变得难以维护. vue的声明式渲染,解决了从 状 ...
- 【React】282- 在 React 组件中使用 Refs 指南
英文:Yomi Eluwande 译文:joking_zhang https://segmentfault.com/a/1190000019277029 使用 React 时,我们的默认思维方式应该 ...
- Django对DateTimeField时间字段查询QuerySet为空的解决方案
今天在用的Django中的filter()方法对DateTimeField字段查询时碰到了问题,抓耳挠腮一下午,终于解决了,我觉得花了一下午的时间怎么着也得记录下吧(无语)...... 问题描述 : ...
- ESD选型
通常情况ESD保护电路如下 当系统没有干扰,正常工作时,ESD器件可以忽略,几乎不起作用 当外部接口电压超过ESD器件的击穿电压(VBR),ESD器件开始起作用,并将电流分流到地. 实际ESD器件的工 ...
- CCF-CSP题解 201612-3 权限查询
一共有三层信息,三层信息的依赖关系是: \[用户user->角色role->权限authority\] 先存储\(authority\)信息,\(role\)直接存储\(authority ...
- 安卓逆向基础(002)-android虚拟机
一, android分两种 1.Android 5.0以下(不含5.0) dalvik字节码 为dalvik虚拟机(jit机制) 基于寄存器架构 .dex=>dexopt=>.odex d ...
- Redis 的常用命令
Redis 的数据类型 一些命令需要结合 redis 的数据类型来说. Redis 4.0 之前有5种数据类型,分别是:字符串(string).散列(hash).列表(list).集合(set).有序 ...