首页 > 其他分享 >CF1479B1 Painting the Array I

CF1479B1 Painting the Array I

时间:2023-10-23 14:46:29浏览次数:33  
标签:方案 相同 答案 Array CF1479B1 Painting 替换 模仿

如果两种方案末尾两数有一数相同,那么答案较大的方案不劣于答案较小的方案。答案较大的方案只需\textbf{模仿}答案较小的方案即可,在状态变成相同之前答案最多只会少 \(1\)。

所以只需要考虑末尾两数 \(a,b\) 与新进来的数 \(c\) 各不相同时该替换哪个。

假设 \(a\) 下次出现的位置早于 \(b\),当下一次 \(a\) 出现时:

  • 替换 \(b\) 的方案中的 \(a\) 已被替换,因为这期间 \(b\) 没出现过,所以替换 \(a\) 的方案可以模仿替换 \(b\) 的方案使得答案和状态相同。
  • 替换 \(b\) 的方案中的 \(a\) 未被替换,也就是说这种方案一直在替换另一个数
    • 中间存在相同数的替换。在发生之前另一种方案一直模仿,发生时另一种方案选择替换 \(b\) 使得答案变大 \(1\),根据最前面那个结论另一种方案不会更劣。
    • 中间不存在相同数的替换。在最后一步之前另一种方案一直模仿,两种方案最终变成了 \(\{a,a\}\) 和 \(\{a,b/d\}\),其中 \(d\) 是前一步的数。考虑再下一步进来的数 \(e\),\(\{a,a\}\) 变成 \(\{a,e\}\),而 \(\{a,b/d\}\) 中 \(b\) 或 \(d\) 肯定有一个不等于 \(e\),同样能变成 \(\{a,e\}\) 并且使得答案变大 \(1\),不会更劣。

所以各不相同时替换下次出现位置靠前的即可,B2 改成靠后的即可。

标签:方案,相同,答案,Array,CF1479B1,Painting,替换,模仿
From: https://www.cnblogs.com/landsol/p/17782345.html

相关文章

  • B. Friendly Arrays
    B.FriendlyArrays依据异或特性,如果n为偶数,单调递减:与b[i]|越多越小反之递增点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;#defineLLlonglonginta[N],b[N];voidsolve(){ intn,m; cin>>n>>m; if(n%2==0){ int......
  • hook array push
       letarr=[1,2,3];letproxy=newProxy(arr,{get(target,prop){if(prop==='push'){returnfunction(...args){console.log('push方法被调用了');returntarget[prop].apply(target,args);}......
  • Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法
    Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,此处测试代码如下,这里使用add方法:1publicclassmain{2publicstaticvoidmain(String[]args){3int[]num={1,2,3};4Listlist=Arrays.asList(num);5list.add(4);......
  • 无涯教程-AWK - 数组(Array)
    AWK具有关联数组,您可以使用字符串或数字作为数组索引。array_name[index]=value其中array_name是数组的名称,index是数组的索引,而value是分配给数组元素的任何值。创建数组为了获得更多关于数组的见解,让我们创建和访问数组的元素。[Learnfk]$awk'BEGIN{fruits["m......
  • 无涯教程-Arduino - Multi-Dimensional Arrays函数
    具有二维的数组(即下标)通常表示由以行和列排列的信息组成的值表。intb[2][2]={{1,2},{3,4}};这些值按大括号按行分组,因此,1和2分别初始化b[0][0]和b[0][1],而3和4分别初始化b[1][0]和b[1][1],如果给定行的初始化程序不足,则将该行的其余元素初始化为0。因此......
  • disp函数/fprintf函数/arrayfun函数
    disp命令只能打印多个变量的值打印多个变量时,可以把它们放在一个数组中或结构体中fprintf命令打印多个变量fpritf(fileID,formatSpec,A1,A2,A3...)arrayfun(func,A)将func应用于A的每个元素functiony=f(x)...endx=-2:1:2;y=arrayfun(@f,x);plot(x,y)......
  • Arrays.asList() 和 Collections.singletonList()
    Collections.singletonList()  创建不可变List,只包含单个元素,List容量始终为1;  Arrays.asList()  快速创建List,但创建的列表是不可变的,不可调用add方法;......
  • Atcoder Beginner Contest 324 G Generate Arrays 题解-Treap
    为了更好的阅读体验,请点击这里题目链接套上平衡树板子就能做的很快的题,然后因为是指针存树,因此交换只需要把序列大小较小的挨个拿出来插到相应的地方即可。复杂度\(O(N\log^2N)\)。但是一定要记住不可以直接使用std::swap交换包含带有指针的类的实例(如代码中的Treap类)!......
  • 将数组转换为ArrayList
    内容来自DOChttps://q.houxu6.top/?s=将数组转换为ArrayList给定一个类型为Element[]的数组:Element[]array={newElement(1),newElement(2),newElement(3)};如何将这个数组转换为类型为ArrayList<Element>的对象?ArrayList<Element>arrayList=???;将数组转......
  • Codeforces Round 892 (Div. 2) B. Olya and Game with Arrays
    一系列\(n\)个数组,第\(i\)个数组的大小\(m_i\geq2\)。第\(i\)个数组为\(a_{m_1},a_{m_2},\cdots,a_{m_i}\)。对于每个数组,你可以移动最多一个元素到另一个数组。一系列\(n\)个数组的\(beauty\)定义为\(\sum_{i=1}^{n}min_{j=1}^{m_i}a_{i,j}\)。询问你......