题意

给定一个数组,每次可以选择两个值分别作为起点和复制长度,l,k。For 例如a=[2,1,3,4,5,3],选择l=1,k=2,然后a[1]=a[3],a[2]=a[4],a=[3,4,3,4,5,3].问最少需要几步可以使得a中所有数字都相同

题解

1.尝试思考最终的数组是任意的吗?还是有个固定的值?
我们可以发现最后一个值是没法动的,所以要让数组变成所有值都一样那么最终数组的值是一定的,就是最后一个值a[n]。
2.怎么样让步数最少?
因为选择l、k是没有额外花费的,所以尽量选择较长的一段相同的a[n],赋值到前面去,所以很容易逆向思考,先将后面的尾巴染成a[n],遇到不是a[n]时就将后面所有的直接把前面刷成a[n]即可,刷的长度是现在已经染完的长度,所以。所以维护一下当前已经染过的长度,每次遇到不同的值就要开染。

#include<bits/stdc++.h>
using namespace std;
int n;
int a[200005],b[1005];
void solve()
{cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];int dif = 0;for (int i = 1; i <= n; i++)if (a[i] != a[n])dif++;int cplen = 0,cnt=0;for (int i = n; i >= 1;){     //cout << i << " " << cplen << " " << cnt << endl;int tid = i,tlen=cplen;if (a[i] == a[n])cplen++,i--;else{   cnt++;for (int k = 0; k < cplen; k++){   if (a[tid - k] != a[n])dif--;if (dif <= 0)break;}cplen *= 2;if (dif <= 0)break;i -= cplen / 2;}}cout << cnt << endl;}
int main()
{int t;cin >> t;while (t--){solve();}
}

Codeforces Round#768(Div.2) B. Fun with Even Subarrays相关推荐

  1. Codeforces Round #768 (Div. 1)(A-C)

    Problem - 1630A - Codeforces 与运算:0&0=0,1&0=0,1&1=1,可知n是2的倍数,那么从0到n-1,其中n-1的每一位都是1,要求其中一半 ...

  2. Codeforces Round#768(Div.2)A-F

    A. Min Max Swap 题意 给定两个数组a.b,可以任意的交换ai .bi.使得max(a1,a2,-,an)⋅max(b1,b2,-,bn) 的值最小 题解: 1.从全局来考虑,由于只是改 ...

  3. Codeforces Round #588 (Div. 2) E. Kamil and Making a Stream 数学 + 暴力

    传送门 文章目录 题意: 思路: 题意: 给你一颗树,其中根是111,每个点有一个点权,求每个点到根的所有路径的gcdgcdgcd之和. n≤1e5n\le1e5n≤1e5 思路: 一看到以为是个点分 ...

  4. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  5. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  6. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  7. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  8. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  9. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

最新文章

  1. php 主观题判分,司法考试改革后多少分通过,客观题主观题分数怎么算?
  2. 动态网站的技术路线_简单动态网站搭建
  3. 怎样做一个真正的男人
  4. 每输入四个字符添加一个中划线
  5. log4j mysql_log4j写入mysql数据库 | 学步园
  6. 几种软件滤波算法的原理和比较(带源码)
  7. Mstsc、Telnet、SSH之间的区别
  8. hdu1501 Zipper--DFS
  9. hpm1005能扫描不能打印_「惠普m1005怎么扫描」HP惠普M1005打印机不能扫描文件该怎么办? - seo实验室...
  10. 重大建设项目土地勘测定界涉及基本农田怎么计算
  11. 分析称Twitter存五大盈利模式 将于4月中旬公布
  12. soap python_Zeep: Python SOAP 客户端
  13. 编程基础巩固——英语单词记忆技巧
  14. 编写Dockerfile来构建nginx:latest镜像
  15. 网站安全渗透测试团队公司解决防护方案
  16. Linkedin领英如何批量撤回邀请,突破加人限制
  17. 滚动轴承损伤、偏翘、电蚀、跑外圈特征分析及信号特征提取
  18. Hack The Box - Catch 利用let chat API查询信息,Cachet配置泄露漏洞获取ssh登录密码,apk代码注入漏洞利用获取root权限
  19. Android LRUCache原理
  20. 环境在线监测监控系统

热门文章

  1. 【腾讯云的1001种玩法】个人网站如何开启HTTPS?
  2. YGG SEA与Solana Ventures达成合作,为东南亚的游戏开发注入活力
  3. php基础(7)_运算符
  4. BiLSTM+CRF (一)双向RNN 浅谈
  5. 如何选择合适的电烙铁
  6. Android设置手机壁纸(WallPaper)
  7. flash media server播放实时视频流
  8. 【移动安全技术】_第四站_登陆框UI设计
  9. VirtualBox 虚拟机 无法启动 报错E_FAIL (0x80004005) 不能为虚拟电脑 打开一个新任务
  10. Promise使用详解2(ES6中的Promise)