首页 > 其他分享 >涂色

涂色

时间:2024-01-26 11:13:45浏览次数:14  
标签:颜色 覆盖 缩短 涂色 区间 操作

这一道题目可以感觉到,如果没有覆盖全部区间的一次涂色,那么一定会有一个分界点

也就是证如下结论:存在一种最优的方案满足对于任意两次染色:它们的区间要么不交,要么靠后的那次被靠前的那次包含

证明只是反证法然后做一些分类讨论。比如,如果两次染色的区间相交但不包含,你可以缩短靠前的那次的区间使它们变得不相交,但不改变最终的结果

因此如果不存在覆盖全部区间的一次涂色,我们像正常的操作一样枚举分段点就可以了

那么什么时候才会存在覆盖全部区间的一次涂色呢?此时一定有两端点的颜色相同(不然覆盖全部区间的一次涂色没有意义,完全可以缩短或者不要)

此时我们考虑区间\([l,r]\),其最优方案中,覆盖\(l\)这个点的最后一次操作一定是\(l\)的颜色,我们把这个操作放到最开始做,并且让这个操作的右端点变成\(r\),显然方案也是合理的,所以有\(f[l][r]=f[l][r-1]\)(当然注意此时换了顺序之后,这个操作可能要缩短一点,其他操作也可能要缩短一点,总之来说左端点附近就不要有重合了)

然而这道题目还可以像消木块那道题目一样考虑最后一段颜色相同的区间什么时候消去,枚举前面颜色相同的区间连起来即可

标签:颜色,覆盖,缩短,涂色,区间,操作
From: https://www.cnblogs.com/dingxingdi/p/17988901

相关文章

  • P3703 树点涂色笔记
    又是一道妙题,加深了蒟蒻对\(\text{LCT}\)的理解。题意给定一棵\(n\)个节点的有根树,根节点为\(1\)。最开始每个节点都有颜色,且颜色互不相同。定义一条路径的权值为:改路径上点的不同颜色数。现在一共会有\(m\)组询问,每组询问有三种:1x将\(x\)到根节点\(1\)上的所......
  • [春季测试 2023] 涂色游戏
    题目描述有一天,小D在刷朋友圈时看到了一段游戏视频。这个游戏的名字叫涂色游戏,视频中的游戏界面是一个\(n\)行\(m\)列的网格,初始时每一个格子都是白色(用数字\(0\)表示)。其中每一行的左侧、每一列的上方都有一把带颜色的刷子。玩家点击某个刷子后,这个刷子会将其右侧(或下......
  • [SDOI2017] 树点涂色
    [SDOI2017]树点涂色题目描述Bob有一棵\(n\)个点的有根树,其中\(1\)号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。Bob可能会进行这几种操作:1x表示把点\(x\)到根节点的路......
  • 涂色
    首先是一种对于这个问题的新的建树方法然后注意lazy标记最开始要初始化为0,不能为1或2,为0的时候表示自己当前的操作已经全部传递给子节点了注意lazy表示的是自己已经完成修改,但是子节点还没有修改,无论是这道题目还是普通的区间加减,我们在递归到一个节点的时候,他的所有祖先结点......
  • P4170 [CQOI2007] 涂色(天赋哥不要点进来)
    前言翻遍洛谷题解,看到大家都在套模板,却很少有人讲出为什么,使我十分崇拜天赋哥。原题链接关于这题的一些事实性证据事实1.来自事实2.来自事实3.来自事实4.来自整理上述事实1.每一次”最短“最优涂色,要么在其他颜色的基础上涂,这称之为融入一个整体;要么另辟蹊径单独......
  • Q7.4.1.2. 奇怪的方格涂色 题解
    原题链接首先想到暴力网络流:考虑最小割,\(S\)表示染黑色,\(T\)表示染白色。每个格子\(i\),连\((S,i,b_i)\),\((i,T,w_i)\)。怎么处理“奇怪的方格”?连\((i,i^\prime,p_i)\)和\((i^\prime,j,+\infty)\)。表示如果\(i\)归属于\(S\)(染黑色),那么就只能忍受奇怪所带来的\(p_i\)......
  • [刷题笔记] CF1132F Clear the String & [CQOI2007] 涂色
    Problem1Problem2双倍经验qwqDescription初始时数组为空,每次可以选择一个区间\(l-r\)将其赋为同一个值,赋的值可以覆盖,给定数组的目标形式,求至少经过多少次操作使得空数组变成目标形式。Solution我们发现每次选择一个区间,大区间包含小区间,小区间可以推到大区间。因此考虑区间......
  • 「解题报告」P3703 [SDOI2017]树点涂色
    有趣题,代码超好写,而且思路超有趣!!!首先发现操作1的操作都是某个点到根,不难发现这样每种颜色一定对应着树上的一条链。那么操作2可以直接树上查分求答案,这样我们只需要考虑维护每个点到根的链的数量了。怎么维护链的数量?发现这个操作1长得和LCT的Access操作一模一样啊,所......
  • 得到 K 个黑块的最少涂色次数
    给你一个长度为n 下标从0 开始的字符串 blocks ,blocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W'和 'B' 分别表示白色和黑色。给你一个整数 k ,表示想要 连续 黑色块的数目。每一次操作中,你可以选择一个白色块将它涂成 黑色块。请你返回至......
  • 区间涂色问题
    一眼区间dp设dp[i][j]为涂完i到j所需的最小次数当a[i]==a[j]时,dp[i][j]=min(dp[i+1][j-1]+1,min(dp[i+1][j],dp[i][j-1]));为什么是dp[i+1][j-1]+1,此时会产生一个异想天开的想法,就是取遍历一遍i+1到j-1这一段字符串,看是否有a[i]字符的出现,如果出现的话dp[i][j]=dp[i+1][j......