[LuoguP3668][USACO17OPEN]现代艺术2

[LuoguP3668][USACO17OPEN]Modern Art2(Link

现在你有一块长为\(N\)的画布,每次可以选择一段连续的区间进行颜色填涂,新颜色会覆盖旧颜色。每一次填涂都要耗费一天时间。在所有的填涂中每一种颜色只能用1次。求将画布变为目标序列的最小天数。如果不能完成填涂那么输出\(-1\)。

首先我们要知道填涂的方式以及什么叫做填涂不合法。

上面的这个方案明显是合法的,我们先涂上“底色”\(Green\)然后再涂\(Red\)就好。

上面的这个情况,你发现无论怎么涂都是不合法。那么我们找到了一个显然的规律:有交叉的颜色就不合法。

于是问题变得简单了,我们用一个栈直接记录一下花费时间就可以了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
typedef long long LL ;
const int MAXN = 100010 ;
const int MAXM = 100010 ;
int N, Line[MAXN], S[MAXN], S1[MAXN], Top, S2[MAXN], Sum ;

inline int Read() {
    int X = 0, F = 1 ; char ch = getchar() ;
    while (ch > '9' || ch < '0') F = (ch == '-' ? - 1 : 1), ch = getchar() ;
    while (ch >= '0' && ch <= '9') X=(X<<1)+(X<<3)+(ch^48), ch = getchar() ;
    return X * F ;
}

int main() {
    N = Read() ;
    for (int i = 1 ; i <= N ; i ++)  {
        Line[i] = Read() ; S2[Line[i]] = i ;
        if (! S1[Line[i]]) S1[Line[i]] = i ;
    }   S2[Line[N + 1]] = N + 1 ;
    for (int i = 0 ; i <= N + 1 ; i ++) {
        if (i == S1[Line[i]]) S[++ Top] = Line[i], Sum = max(Top, Sum) ;
        if (Line[i] != S[Top]) {
            printf("-1") ; return 0 ;
        }   if (i == S2[Line[i]]) Top -- ;
    }
    printf("%d", Sum) ;
}

原文地址:https://www.cnblogs.com/Yeasio-Nein/p/P3668.html

时间: 2024-08-30 07:45:58

[LuoguP3668][USACO17OPEN]现代艺术2的相关文章

[luoguP3668] [USACO17OPEN]Modern Art 2 现代艺术2(栈)

传送门 还是一个字——栈 然后加一大堆特判 至少我是这么做的 我的代码 #include <cstdio> #include <iostream> #define N 100001 #define max(x, y) ((x) > (y) ? (x) : (y)) int s[N], a[N], b[N]; int n, top, ans; inline int read() { int x = 0, f = 1; char ch = getchar(); for(; !is

洛谷 P3671 [USACO17OPEN]Where&#39;s Bessie? 贝西在哪呢

P3671 [USACO17OPEN]Where's Bessie? 贝西在哪呢 题目背景 农夫John正在测试一个他新发明的全自动寻找奶牛无人机,它能够照一张农场的图片然后自动找出奶牛的位置. 不幸的是,这个相机并不包含一个优秀的寻找奶牛函数,所以农夫John需要你来写一个. 农场的俯瞰图被定义为一个n * n的字符矩阵.矩阵由大写字母A到Z组成,每个字母表示一种可行 的颜色.农夫John发现一个可能是奶牛的位置(以下简称PCL)的最好定义如下: 一个PCL是一个矩阵(可能是整张图),矩阵的边

A 现代艺术

时间限制 : - MS   空间限制 : 165536 KB  评测说明 : 1s 问题描述 何老板是一个现代派的艺术家.他在一块由n*n的方格构成的画布上作画.一开始,所有格子里的数字都是0.何老板作画的方式很独特,他先后给N^2个子矩阵涂上了颜色,每次都是从1到N^2这些数字中选一个给对应矩阵全部填上该数字.比如:第1步,他选数字2填在了一个子矩阵上.如下图: 2 2 2 0 2 2 2 0 2 2 2 0 0 0 0 0 第2步,他用数字7填在了一个子矩阵上: 2 2 2 0 2 7 7

P3665 [USACO17OPEN]Switch Grass

题目描述 N个点M条边的无向图,每个点有一个初始颜色,每次改变一个点的颜色,求改变后整张图上颜色不同的点之间的距离最小值. 思路 考虑整张图的距离最小值一定是一条边,而不可能是一条路径,那么显然这条边一定在MST上,于是我们考虑怎样维护这棵MST. 首先我们用kruskal建出MST,然后转化为有根树,把边权下放为点权,只维护每个点和它儿子的信息. 我们对每个节点所有儿子的颜色开一个multiset,维护每个点的儿子中每种颜色对应的最小边权(此时下放为点权),为了节省空间我们用map映射把颜色那

哲学的沉默

上次说艺术家们沉沦了,其实凭良心说,这也怪不了艺术家.艺术家要想得到天使的垂青,那不是说来就来的.艺术之上,其实还是一个类似母亲一样提供乳汁滋养的东西立在那儿的,那就是哲学. 哲学就像一道光,他照在哪儿,人类才能看到哪儿,他照不到的地方,对人类来说自然就是黑暗,那一条明与暗间的分界线,就是人类智慧所能达到的上限. 放眼整个人类社会,每一次人类文明的大飞跃与大发展都是从新的哲学思潮开始的,哲学影响政治,哲学影响着科学,哲学当然也影响着艺术.最近一百多年,哲学 还直接作用于社会,变革着社会,没错,我

选择成为质数

1 选择成为质数 作者:李静睿 2 3 今年奥斯卡大热的电影<模仿游戏>改编自安德鲁·霍奇斯所写的<艾伦·图灵传:如谜的解谜者>,一个数学家为另一个数学家所写的传记,两个人都是天才,两个人都是同性恋者. 4 5 看完电影之后好几天我没法从那种说不清是生理还是心理的不适中走出来,<模仿游戏>的片尾字幕上清清楚楚写着图灵对人类的贡献:“历史学家认为,英格玛密码的破解使二战至少缩短了两年,拯救了1400万人的生命.”但在战后不到十年,仅仅因为是同性恋者,图灵就被指控犯有“明显

New Concept English Two 10 28

$课文26 最佳艺术评论家 256. I am an art student and I paint a lot of pictures. 我是个学艺术的学生,画了很多画. 257. Many people pretend that they understand modern art 有很多人装成很懂现代艺术的样子,. 258. They always tell you what a picture is 'about'. 总是告诉你一幅画的"意思"是什么. 259. Of cour

bzoj2592: [Usaco2012 Feb]Symmetry

Description After taking a modern art class, Farmer John has become interested in finding geometric patterns in everything around his farm. He carefully plots the locations of his N cows (2 <= N <= 1000), each one occupying a distinct point in the 2

王垠:《程序员的心理疾病》

说实话,虽然似乎为之奋斗了十多年,在真正进入软件行业的短短一年之后,我已经对它感到相当的厌倦了.这并不是说这个行业没有前景,而是在这个行业工作,其实很难得到心理上的快乐. 人们说女怕嫁错郎,男怕入错行.我并不认为自己入错了行,我仍然很喜欢设计程序和语言,而且我显然是这个领域的王牌之一.然而我却看到了这个行业里的无限混沌,让我觉得喘不过气来.几十年的垃圾设计堆积在那里,却没有人试图把它们清理掉,权威主义盛行.无论你在哪个公司,哪个地方,只要跟程序员说话,十有八九会谈不来.非常扫兴不说,甚至感觉很伤