首页 > 其他分享 >NOIP集训Day24 DP常见模型3 - 区间

NOIP集训Day24 DP常见模型3 - 区间

时间:2024-09-06 10:37:54浏览次数:12  
标签:颜色 NOIP Day24 染成 染色 区间 DP

NOIP集训Day24 DP常见模型3 - 区间

A. [CF1572C] Paint

设 \(f_{i, j}\) 表示区间 \([i, j]\) 涂成一种颜色的最小染色次数。可以发现对于区间 \([i, j]\),一定有一个最优方案使得整个区间最后染色成 \(a_j\)。这是因为 \(j\) 在区间 \([i, j]\) 的边缘,一定存在一个 \(k\in [i, j - 1]\),使得先将 \([k, j - 1]\) 染成一个个颜色,然后将 \([k, j]\) 统一颜色,再将 \([i, j]\) 统一颜色。如果 \([k, j - 1]\) 按照一种最优方案染完色后与 \(a_j\) 的颜色不同,则要使整个区间颜色相同,只要让 \(j\) 或者 \([k, j - 1]\) 整体变颜色,而无论变成什么颜色,必然使用一次染色,故选择将区间 \([k, j]\) 染成 \(a_j\),同理,将 \([i, k - 1]\) 和 \([k, j]\) 颜色统一时,都将他们染成 \(a_j\) 也是不劣的。

所以将 \(f_{i, j}\) 重新定义为:将 \([i, j]\) 涂成 \(a_j\) 时的最小染色次数。

则有转移:\(f_{i, j} = \min(f_{i, j - 1} + [a_{j - 1}\ne a_j],\min\limits_{i + 1\le k \le j - 2} (f_{i, k} + f_{k + 1, j} + [a_k \ne a_j]))\),\(f_{i, i} = 0\)

时间复杂度 \(\Theta(n^3)\),显然 TLE。

题目中还有一句话:每种颜色最多出现 \(20\) 次。

进一步考虑,对于 \([i, j]\) 中的决策点 \(k\),总存在一个决策点有 \(a_k = a_j\) 的性质。

证明:将 \([i, j]\) 划分成若干个小区间 \([i, k_1], [k_1 + 1, k_2],\dots,[k_m + 1, j]\),显然这些区间合并时不需要额外使用一次染色,而若再将其中国的一个区间拆开作为决策点,那么会少一次将左半部分染成 \(a_j\) 的操作,多一次将决策点左右两部分颜色统一的染色操作,所以这样做是不劣的。所以,在枚举 \(k\) 时,只需枚举 \(a_k = a_j\) 的那一部分就好了。

时间复杂度 \(\Theta(20\times n^2)\)。


标签:颜色,NOIP,Day24,染成,染色,区间,DP
From: https://www.cnblogs.com/Leirt/p/18399769

相关文章

  • 传统行业产品管理转型升级:NPDP®证书——赋能未来的强劲动力
    在快速变化的商业环境中,传统行业正面临着前所未有的挑战与机遇。随着消费者需求的日益多元化、技术创新的不断加速以及市场竞争的日益激烈,传统行业的产品管理不再仅仅局限于生产制造与销售环节,而是需要向更加精细化、智能化、用户导向的方向转变。在这一过程中,获取国际认可的产品管......
  • 洛谷P1032 [NOIP2002 提高组] 字串变换
    ac代码:#include<bits/stdc++.h>usingnamespacestd;constintN=15;structnode{ stringstr; intstep;};stringa,b;stringorginal[N];stringtranslated[N];intn,ans;map<string,int>ma;stringtrans(conststring&str,inti,i......
  • DP优化——wqs二分
    在看wqs二分前建议先去看另一篇博客——斜率优化,对凸包等知识点有所了解。介绍wqs二分最初由王钦石在他的2012年国家集训队论文中提出,也叫"带权二分",或者"dp凸优化",而从IOI2016的Aliens题目开始,这种方法开始逐步在竞赛圈中有了一定的地位。在国内我们一般称为「wqs二......
  • NOIP2024集训Day23 DP常见模型3 - 树形
    NOIP2024集训Day23DP常见模型3-树形A.[CSP-S2021]括号序列区间dp,令\(f_{l,r}\)表示从位置\(l\)到位置\(r\)一共的合法序列总情况数量。一共有六种不同的转移情况,所以将\(f_{l,r}\)扩充到三维。全是*(...)(...)**(...)***,左边以括号序列开头,右边以*结尾......
  • Modbus RTU转Profibus DP协议网关(推荐收藏呀!)
    ModbusRTU转ProfibusDP实现网络协议互通这一问题备受众人瞩目,而远创智控YC-MDPB-001可以轻松化解这一难题。接下来,作者将从该设备的主要功能、技术参数、性能优势以及配置方法等几个方面进行深入阐述。这款协议转化网关在工业自动化领域有着至关重要的地位,能够高效地转换不同......
  • dfs P1019 [NOIP2000 提高组] 单词接龙
    题目大意:单词接龙,找出最长的长度的单词。题解:由于数据量较小,单词可多次使用,使用后可回溯,考虑dfs。代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e3+10;intn,used[N],ans;stringa[N],start;voiddfs(stringword){......
  • 实现TCP收发信息和UDP收发信息
    1.TCP通信服务器端#include<myhead.h>#defineSERPORT6666#defineSERIP"192.168.0.136"#defineBACKLOG5intmain(intargc,constchar*argv[]){ intoldfd=socket(AF_INET,SOCK_STREAM,0); if(oldfd==-1) { perror("socket"); retu......
  • 每日OJ_牛客_最长递增子序列(dp/贪心模板)
    目录牛客_最长递增子序列(dp/贪心模板)解析代码牛客_最长递增子序列(dp/贪心模板)最长公共子序列__牛客网解析代码在一个序列中找最长递增子序列,动态规划的典型应用,下面是两个模版CISdp模板:#include<iostream>#include<vector>usingnamespacestd;intLIS(vect......
  • 概期DP做题记录
    概期DPP3600考虑\(ans\in[1,x]\),那么有:\[\begin{aligned}E(ans)&=\sum_{i\in[1,x]}iP(ans=i)\\&=\sum_{i\in[1,x]}P(ans\geqi)\\&=\sum1-P(ans<i)\\&=x-\sumP(ans<i)\end{aligned}\]我们就只需要计......
  • DP优化——斜率优化
    引言在学数据结构优化dp,单调队列优化dp时都很快就懂了,四边形不等式优化dp看一看也懂了,只有斜率优化理解了一个月还不懂,最后在其他大佬和资料的帮助下成功学懂了,于是争取这篇题解在以后又不会的时候一遍就懂。前置数学知识1.一次函数初中数学知识,见八年级数学课本。2.凸包(......