题意

给你一个形如\(1,2,\cdots,R,1,2,\cdots,R,1\cdots\)的序列,共重复\(C\)次。你每次可以选择一个区间\([L,R]\)将其平移到序列首部,最终使得序列具有\([1,1,\cdots,1,2,2,\cdots,2,\cdots,R,R,\cdots,R]\)的形式。问最少需要多少次,并输出具体步骤。

解题思路

比赛的时候只来得及写前两道,这道题是赛后看dls录播后补的。啥都不说了,dlstxdy!

对于相邻且相同的元素,我们就把他合并成\(1\)个元素,要求的序列形式就变为\([1,2,\cdots,R]\)。

对于一个序列,把他的一段区间平移到序列的首部,很容易可以证出最多删掉两个元素。

比如对于\([[1,2],[3,1],2,3,1,2,3]\),我们可以把第一个\([3,1]\)移到序列首部,得到\([3,1,1,2,2,3,1,2,3]\),合并相邻且相同的元素后是\([[3,1],[2,3],1,2,3]\),然后再把第一个\([2,3]\)移动到序列首部,得到\([2,3,3,1,1,2,3]\),合并后是\([[2,3],[1,2],3]\),然后再把第一个\([1,2]\)移动到序列首部,得到\([1,2,3]\)。

如果我们每次都删掉两个元素,那么使用的次数肯定是最少的。但是还有一种特殊情况,比如\(R=5,C=2\)的时候按上述方法缩到最后会得到\([5,1,2,3,4,5]\)的序列。这种情况下就把\([1,2,3,4,5]\)移动到序列首部,然后就可以得到\([1,2,3,4,5]\),这样子也肯定是最优的。

然后因为\(R,C\)的取值范围比较小,直接模拟就完事了。

Google Code Jam 2020 Round1B Join the Ranks的更多相关文章

  1. Google Code Jam 2020 Round1B Expogo

    题意 你初始位于\((0,0)\),然后你想要到\((x,y)\)去,第\(i\)步的步长是\(2^{i-1}\),要求用最少的步数走到\((x,y)\). 解题思路 首先可以推出,走\(i\)步可以 ...

  2. Google Code Jam 2020 Round1B Blindfolded Bullseye

    总结 这一题是道交互题,平时写的不多,没啥调试经验,GYM上遇到了少说交个十几发.一开始很快的想出了恰烂分的方法,但是没有着急写,果然很快就又把Test Set3的方法想到了,但是想到归想到,调了快一 ...

  3. [Google Code Jam (Qualification Round 2014) ] B. Cookie Clicker Alpha

    Problem B. Cookie Clicker Alpha   Introduction Cookie Clicker is a Javascript game by Orteil, where ...

  4. [Google Code Jam (Qualification Round 2014) ] A. Magic Trick

    Problem A. Magic Trick Small input6 points You have solved this input set.   Note: To advance to the ...

  5. [C++]Store Credit——Google Code Jam Qualification Round Africa 2010

    Google Code Jam Qualification Round Africa 2010 的第一题,很简单. Problem You receive a credit C at a local ...

  6. [C++]Saving the Universe——Google Code Jam Qualification Round 2008

    Google Code Jam 2008 资格赛的第一题:Saving the Universe. 问题描述如下: Problem The urban legend goes that if you ...

  7. Google Code Jam Africa 2010 Qualification Round Problem B. Reverse Words

    Google Code Jam Africa 2010 Qualification Round Problem B. Reverse Words https://code.google.com/cod ...

  8. Google Code Jam Africa 2010 Qualification Round Problem A. Store Credit

    Google Code Jam Qualification Round Africa 2010 Problem A. Store Credit https://code.google.com/code ...

  9. Google Code Jam 2010 Round 1C Problem A. Rope Intranet

    Google Code Jam 2010 Round 1C Problem A. Rope Intranet https://code.google.com/codejam/contest/61910 ...

随机推荐

  1. 学学Viewbinding

    Viewbinding 1.环境需求 环境上,需要Android Studio 3.6 Canary 11+ 同样的Gradle也需要升级(这年头都4.0了,应该没有还在用低版本的了吧...) 2.配 ...

  2. kafka的学习1

    1.Kafka是什么? Apache Kafka 是一款开源的分布式消息引擎系统.倘若“消息引擎系统”这个词对你来说有点陌生的话,那么“消息队列”“消息中间件”的提法想必你一定是有所耳闻的.不过说实话 ...

  3. 新浪、腾讯、淘宝为何如此重视Web前端?前端入门容易吗?

    为什么新浪.搜狐.网易.腾讯.淘宝等在内的各种规模的IT企业,都对web前端越来越重视了呢?小编为您揭晓答案! web前端的由来 以前会Photoshop和Dreamweaver就可以制作网页.随着时 ...

  4. JS 前端框架笔记

    Swiper轮播图插件使用     官网:https://www.swiper.com.cn/     先引用插件的css.js文件     然后找到需要使用的轮播图文件中去把HTML css和JS代 ...

  5. C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/961 访问. 状态机可以理解为实现了备忘录模式(仅作为 ...

  6. DRF基础操作流程

    Django Rest_Framework 核心思想: 缩减编写api接口的代码 -->DRF Django REST framework是一个建立在Django基础之上的Web 应用开发框架, ...

  7. 洛谷P1036.选数(DFS)

    题目描述 已知 n个整数 x1,x2,-,xn,以及11个整数k(k<n).从n个整数中任选k个整数相加,可分别得到一系列的和.例如当n=4,k=3,4个整数分别为3,7,12,19时,可得全部 ...

  8. c cpp编程用到的系统边角与其拾遗

    拾遗 Q:unix编程怎么查一个函数在哪个头文件中 A: 可以用诸如 man 3 printf Q: man后面接个数字什么意思,如man 3 printf A:如下 man man中的引用 下表显示 ...

  9. Dataway与SpringBoot集成干掉后台开发

    Dataway与SpringBoot集成干掉后台开发 Dataway让SpringBoot不在需要Controller.Service.DAO.Mapper了. 第一步:引入相关依赖 <depe ...

  10. unity探索者之UGUI图片描边

    版权声明:本文为原创文章,转载请声明https://www.cnblogs.com/unityExplorer/p/13524270.html 自从UGUI出现之后,我就已经放弃使用NGUI了,原因不 ...