首页 > 其他分享 >Replace on Segment

Replace on Segment

时间:2024-02-22 14:23:03浏览次数:27  
标签:分段 覆盖 Replace 整个 区间 操作 Segment 转移

看了一下数据范围就知道是区间DP

像这种选择区间的操作,我们一般都会猜一个结论:对区间\([l,r]\)的某种操作序列,如果没有一次操作是覆盖了整个区间的,那么中间一定可以找到一个分段点(这样才可以进行区间DP的枚举分段点的经典转移)

实际上,这道题目也是有类似的性质的

然后放一下正式证明,有兴趣就看一下吧

然后我们就可以设出一个状态:设\(f[i][j][k]\)表示将区间\([i,j]\)变换为\(k\)的最小代价

然后枚举分段点转移即可

但是就像我们上面说的这样,可以使存在一种操作覆盖全部区间的

如果这个操作不是将这个区间改成\(k\),那么接下来的一次操作肯定是再次覆盖整个区间,将这个区间变成\(k\)(也就可以归入下面的情况)

如果这个操作是将这个区间改成\(k\),那么之前的操作一定是将\([i,j]\)中所有等于\(k\)的数全部移除

所以我们设\(g[i][j][k]\)表示将区间\([i,j]\)中所有\([k]\)移除掉的最小代价

一种转移方式当然是枚举分段点(就像我们上面说的这样,如果没有某一次操作是覆盖整个区间的话)

如果某一次操作是覆盖整个区间了,那么最后一次操作一定是覆盖整个区间的操作,而且这次操作显然不是将区间变成\(k\)(如果某次覆盖整个区间的操作是将整个区间变成\(k\),那么下一次操作一定是将区间变成非\(k\),如果某次覆盖整个区间的操作不是将整个区间变成\(k\),那么这就是最后一次操作),所以有转移\(g[i][j][k]=g[i][j][l]+1\),其中\(l!=k\),意味着我们先将这个区间变成不含\(l\)的,然后最后一次操作将这个区间变成\(l\)

以上操作存在循环转移,为了避免类似情况,我们先进行分段点的转移,然后记录最小值,显然这个最小值不会再改变,然后利用这个最小值去改变区间状态(第二种转移)

这个思想非常秒,可以记住

标签:分段,覆盖,Replace,整个,区间,操作,Segment,转移
From: https://www.cnblogs.com/dingxingdi/p/18027223

相关文章

  • CF1196B Odd Sum Segments题解
    【问题分析】本题考了奇数。由此想到以下定律:奇数+偶数=奇数;奇数+奇数=偶数;偶数+偶数=偶数;所以偶数可以忽略不计,只有奇数可以对结果产生影响,所以我们只要注意奇数即可。经过思考可得奇数的个数至少为$k$个且比$k$多的个数为偶数,此时多出的奇数可组成偶数,对结果不产生......
  • CF1872G Replace With Product
    刚看到这道题的时候就第一感觉应该是乘积比加和更优。发现如果序列中所有数的乘积比\(2\times10^{14}\)更大,在区间左右端点不为\(1\)时,全乘起来一定更优。若左右端点为\(1\),则找到两端的第一个非\(1\)位置即为答案。否则,发现\(2^{49}>2\times10^{14}\),则区间内非\(1\)......
  • itertools.combinations_with_replacement和itertools.combinations的区别
    itertools.combinations和itertools.combinations_with_replacement都是Python标准库中的工具,用于生成组合。它们的主要区别在于对元素的重复使用上。itertools.combinations(iterable,r):生成不含重复元素的组合。iterable是可迭代对象,例如列表或字符串。r是生成的......
  • CF1677E Tokitsukaze and Beautiful Subsegments
    (题目传送门)你就算再怎么套路我也做不出来……看到\(\maxa_k\),根据套路想到用单调栈处理出\(a_i\)左边第一个比它大的位置\(pre_i\),右边第一个比它大的位置\(nxt_i\)。枚举最大值\(a_i\)考虑它的贡献,显然若存在\(j,k\)满足\(nxt_i<j,k<pre_i\)且\(a_j\timesa_k=a......
  • javascript replaceall 正则表达式
    varstr="dogdogdog";varstr2=str.replace(/dog/g,"cat");console.log(str2);参考:https://www.jb51.net/article/23762.htm?tdsourcetag=s_pcqq_aiomsgstr="dogdogdog12";str=str.replace(newRegExp("[d]","g......
  • CF1922F Replace on Segment
    看到有区间操作,结合\(n\le100\)的数据范围,直接考虑区间dp。设\(f_{l,r,x}\)表示将区间\([l,r]\)全部替换成\(x\)的最小步数。首先有\(f_{l,r,x}=\max_{p=l}^{r-1}f_{l,p,x}+f_{p+1,r,x}\),但这无法将该状态下的所有的情况都转移到,所以考虑再设一个\(g_{l,r,x}\)表示......
  • 【学习笔记】Segment Tree Beats/吉司机线段树
    一.区间最值操作本文对吉如一老师在\(2016\)年国家集训队论文中的线段树处理历史区间最值的问题的一些杂谈。区间最值笼统地指求区间的最值以及区间所有数对\(x\)取最值(即令\(a_i=\max/\min(a_i,x)\))这一类的查询与修改操作。HDU5306GorgeousSequence支持对区间......
  • [CF1707E] Replace
    Replace题面翻译题目描述给定一个长为\(n\)的序列\(a_1,\ldots,a_n\),其中对于任意的\(i\)满足\(1\leqa_i\leqn\)。定义一个二元组函数如下:\[f((l,r))=(\min\{a_l,\ldots,a_r\},\max\{a_l,\ldots,a_r\})(l\leqr)\]你需要回答\(q\)次询问,每次给定\((l_i,r_i)\)......
  • An improved LSTM-based model for identifying high working intensity load segment
    一区topComputersandElectronicsinAgriculture题目:“基于改进lstm的拖拉机载荷谱高工作强度载荷段识别模型”(pdf)“AnimprovedLSTM-basedmodelforidentifyinghighworkingintensityloadsegmentsofthetractorloadspectrum”(pdf)分类问题针对的问题:......
  • Learning Dynamic Query Combinations for Transformer-based Object** Detection and
    Motivation&Intro基于DETR的目标检测范式(语义分割的Maskformer也与之相似)通常会用到一系列固定的query,这些query是图像中目标对象位置和语义的全局先验。如果能够根据图像的语义信息调整query,就可以捕捉特定场景中物体位置和类别的分布。例如,当高级语义显示图像是一张合影时,我......