首页 > 其他分享 >AT做题记录

AT做题记录

时间:2023-11-12 19:47:43浏览次数:31  
标签:随便 记录 位置 个数 偶数 做题 重排 奇数

很喜欢atcoder上的题目,思维含量很高,而且明显感觉不像cf那样有点奇怪,风格更偏oi一点吧(再也不打cf了)。主要会记录蒟蒻做题时的一些想法,边做边写,想到什么就会写什么(这不是草稿纸嘛) 可能有点乱,但毕竟是真实思路变化。想不出来的会看了题解之后自己写一遍,并记录一下自己没想到的点(感觉很可能全都没想到)

[ARC155C] Even Sum Triplet

首先想到,3个数相加为偶数只有2种情况:2奇1偶或3个都是偶数。然后立马想到判无解的一种情况:若 \(A\) 中有元素个数和 \(B\) 不一样,直接输出 -1 。枚举一下可重排3个数的奇偶排列情况:110101011000 。emmm,我们可以发现什么捏?试着再考虑一下不可重排的三个数奇偶情况: 001010100111 。发现任意一个不可重排的2组,放在一起都可以产生一组能重排的排列。 如 001010101 就是可重排的。又想了一下,发现不管怎么对 000 进行排列都无法使得它周围的3个数变得可以重排。考虑极端情况,若一个序列全是奇数,则不可重排。若全是偶数,则任意排列。若在全是奇数的序列中加入一个偶数,那么,此时序列里偶数的位置随便跑,并且可以随便调整奇数的位置。此时是必然有解的。由此而推广,我们会发现若有2奇1偶的情况,那么奇数的位置可以全部调至左边并随便排列顺序,而且可以有一个偶数的位置随便排。之后就想不动了,打摆子了QAQ。题解:接着就是若有2个偶数,则这2个偶数无法交换相对位置,3个偶数就随便了。要是没有连续的3个数中有2个奇数,那么奇数会把序列分成几段,每一段中若是只有2个偶数就没法动,有3个以上偶数就可以随便在这段中动了。

感觉主要是自己不太敢想,对于复杂题目多多尝试分类讨论,其实当时对于后面的我多想想应该是可以独立想出来的。

决定自己搞一个严谨的证明,毕竟终究中间有点感性证明,不是很舒服。
以下将偶数称作 0 ,奇数称作 1

  1. 对于有2奇1偶的情况:
    1. 1 若是只有一个偶数:此时0可以随便移动,而且位于0两端的1可以互换位置,我们就可以先将所有1移到最左边,然后类似于冒泡排序就可以排列出 \(B\) 了。这便必然有解。
    2. 2 若是有两个偶数:我们可以知道,因为一次操作只能操作连续的3个数,所以若是两个数可以交换位置,当且仅当它们处于连续3个数内且符合重排条件。而若是连续3格内有2个0明显不能重排,因此这两个0的相对位置永远无法改变。所以我们首先需要判断2个0的相对位置,之后就同1.1的情况类似,可以随便排,只不过0的相对位置不能改变而已。
    3. 3 若是有3个偶数以上:我们可以把所有1先排到最左边,这样右边的0随便调整位置,再把0插入到对应位置即可。有解
  2. 对于没有2奇1偶的情况:
    很容易发现,所有的1都不能动,将整个序列由1分成几段,那么只有0的个数大于2的段才能排列中间的顺序,小于等于2的都无法改变位置。判断即可。

[ARC154C] Roller

首先考虑最简单的无解情况: \(b\) 中有数没有在 \(a\) 中出现过。然后捏?看题解 紧接着可以发现这是一个环形的形状。

标签:随便,记录,位置,个数,偶数,做题,重排,奇数
From: https://www.cnblogs.com/yduck/p/17827635.html

相关文章

  • 微信的聊天记录导出到网页中的最快方法,语音能听,图片视频能看
    12-7如果你有把微信的聊天记录导出到表格或者网页上的需求,适合看看本文章,本文的方法可以让你把微信的聊天记录导出备份,可以在完全脱离微信的情况下随时调取查看聊天数据。本文介绍的软件可以导出两种格式的聊天记录备份文件,一种是表格,一种是网页。导出表格的好处是文本紧凑,篇幅小,缺......
  • Util应用框架基础(六) - 日志记录(四) - 写入 Exceptionless
    本文是Util应用框架日志记录的第四篇,介绍安装和写入Exceptionless日志系统的配置方法.Exceptionless是一个日志管理系统,使用Asp.NetCore开发,比Seq的模糊搜索能力弱,使用它可能需要一些技巧.Util应用框架目前主要使用Seq和Exceptionless管理日志.你可以从中选择......
  • python学习记录
    np.random.seed是NumPy库中用于设置随机数生成器种子的函数。种子是一个整数,用于初始化随机数生成器的内部状态。通过设置相同的种子,可以确保在相同的条件下生成相同的随机数序列,这对于实验的可重复性和调试是非常有用的。在深度学习和机器学习中,随机初始化是一个常见的操作,例......
  • Util应用框架基础(六) - 日志记录(二) - 写入日志文件
    本文是Util应用框架日志记录的第二篇,介绍写入日志文件的配置方法.概述将日志写入文本文件,不方便查看和管理,但在开发阶段可以作为临时查看日志的手段.日志配置引用Nuget包Nuget包名:Util.Logging.SerilogAddSerilog使用AddSerilog扩展方法启用Serilog日志操作.......
  • Util应用框架基础(六) - 日志记录(三) - 写入 Seq
    本文是Util应用框架日志记录的第三篇,介绍安装和写入Seq日志系统的配置方法.安装SeqSeq是一个日志管理系统,对结构化日志数据拥有强大的模糊搜索能力.Util应用框架目前主要使用Seq和Exceptionless管理日志.你可以从中选择一个合适的.本节介绍使用Docker简单安装Seq......
  • C语言学习记录(十)
    字符数组初始化及传递字符数组的初始化(1)对每个字符单独赋值进行初始化。例如,c[0]='I';c[1]='';c[2]='a';c[3]='m';c[4]='';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';(2)对整个数组进行初始化。例如,charc......
  • 一个操作系统的设计与实现——第2章 主引导记录
    2.1BIOS当按下开机键的那一刻,发生了什么呢?这是一个百废待兴的时刻,所有的硬件设备都刚启动,并没有做好准备,甚至连CPU自己都是。此时,就需要一些外力帮助CPU工作起来。具体来说,在CPU刚启动时,其CS:IP被硬件电路设定为f000:fff0。这个地址并非指向内存,而是指向主板的一个非易失性ROM,......
  • 歌谣v2+ele笔记记录JsonServer模拟数据2
    第一步初始化配置npminit-y第二步yarnaddjson-server第三步创建db.json文件{"account":{"user":[{"name":"geyao","password":"123456"}]}}启动json-server--watch.......
  • MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录
    使用ORDERBY进行排序使用ORDERBY语句按升序或降序对结果进行排序。ORDERBY关键字默认按升序排序。要按降序排序结果,使用DESC关键字。示例按名称按字母顺序排序结果:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="yourusernam......
  • MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录
    使用ORDERBY进行排序使用ORDERBY语句按升序或降序对结果进行排序。ORDERBY关键字默认按升序排序。要按降序排序结果,使用DESC关键字。示例按名称按字母顺序排序结果:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="youruserna......