首页 > 其他分享 >1月做题记录

1月做题记录

时间:2025-01-02 21:53:36浏览次数:1  
标签:连通 val 记录 显然 时限 做题 中心点

1月做题记录

✩ trick
✯ 会大部分,要\(tj\)提示
✬ 会小部分/完全没想到,看了\(tj\)才会
◈ 脑电波
✡ 有某一算法的神秘通用性质
⊗ 待补

目录

[ABC363G] Dynamic Scheduling ✯✩

对于这种问题,它的静态版是比较普遍的,大概有以下几种性质/做法:

  • 最优方案放的数肯定也是最多的
  • 最优方案可以按\((D_i,-P_i)\)排序,排序后显然也合法且更方便解题
  • 有种贪心的做法,就是从后往前遍历当前时间\(i\),然后选时限\(\geq i\)的还没放的最大的点放,这也做法也能证明第一点

再来考虑现在动态的问题,即能删除或插入元素,按照第二点维护当前的最优方案序列

对每个时间点记录一下\(val_i\)表示\(i-\)时限\(\leq i\)的放了的点数,那么合法显然要所有点都满足\(val_i\geq0\)

下面的\(val\)都指的原本的\(val\)即还未修改的,\(val'\)就是修改后的

  • 对于插入\((d,-p)\)

若\(\forall i\geq d\),都有\(val_i>0\),显然\((d,-p)\)可以直接插入了

否则,说明若要插入\((d,-p)\),则必删除一个元素,那么有两种选择

要么删除时限\(i<d\)的点,这个是直接选最小的那个就好

要么删除时限\(i\geq d\)的点,此时删时限\(i\leq t\)的值最小的元素,其中\(t\)是最小的满足\(val_t=0\)且\(t\geq d\)的时限

  • 对于删除\((d,-p)\)

若该元素不在我们维护的最优方案中就不管,否则,考虑用什么元素去顶替它

若用时限\(i\leq p\)的元素顶替,则\(i\)要满足\(i>t\),其中\(t\leq p\)且是最大的满足\(val'_t=0\)的点

若用时限\(i>p\)的元素顶替,就没有限制了,选个最大的就好

复杂度\(O(NlogN)\)

[ARC109F] 1D Kingdom Builder

考虑判断最后怎样的情况是合法的,显然最后会是一个个连通块

考虑把这个放的过程倒过来,即考虑删的过程,要求每次删的时候,要么它有相邻的棋子,要么其它连通块的两侧没有它的颜色

显然每个连通块都会有个中心点,即最早放/最晚删的那个点

考虑第一个被删的中心点,设它的颜色是\(c\),反色是\(c'\),则此时其他连通块两侧都得有\(c'\)

把其它连通块的初始态分为纯色or非纯色,对于非纯色和纯\(c\)的,显然也能用\(c\)当中心点的颜色,即可以依次删完

则此时只剩下了纯\(c'\)色,显然只能至多一个,然后直接删了就行

总结一下合法的局面一定满足:

  • 算上连通块两侧的点,第一个中心点被加入的连通块要存在子序列\(c'c'\)
  • 算上连通块两侧的点,在中间中心点被加入的连通块的要存在子序列\(c'cc'\)
  • 最后一个中心点被加入的连通块要存在子序列\(c\)

以下简称为第一个连通块,中间连通块,最后一个连通块

再考虑满足这个性质的是不是一定合法,显然可以把除最后一个连通块都弄成两侧只存在\(c'\)的情况,那么最后一个连通块和中间的连通块都可以直接删完了,现在只剩一个连通块显然也能删完

那么直接\(dp[i][0/1][0/1]\)表示第一个/最后一个是否被钦定,考虑前\(i\)个且第\(i\)个不选时的合法的局面中(即要选的都得选),最小的连通块长度之和

转移可以发现,满足每种转移需求的都是一个前缀(某些被钦定要选的点对应的转移点会被挖掉),那么子序列自动机+前缀最小值即可

子序列自动机说着多高级,其实就是\(to[x][c]\)表示\(x\)后的第一个\(c\),如果\(|C|\)够小,直接转移,否则可持久化线段树就好

初始化的时候要给两边多塞\(3\)个,因为是可能会用到某一侧的\(2\)个多的数的,如\(hack\)数据

Input
42
wwwwwwwwwwwwbbbbwwbbbwwbbbbbbbwwwwwwwwwwww
____o___________oo___oo__________________o

Output
8

做法:44(b) -> 17(w) -> 18(w) -> 22(w) -> 23(w) -> 5(w) -> 43(b) -> 42(w)

而用\(3\)个肯定没有意义

复杂度\(O(N)\)

标签:连通,val,记录,显然,时限,做题,中心点
From: https://www.cnblogs.com/LuoyuSitfitw/p/18646829

相关文章

  • 2025-1-1 / 2025-1-2 做题笔记
    2025-1-1/2025-1-2做题笔记持续更新中……目录2025-1-1/2025-1-2做题笔记CF1534H-LostNodesCF1510B-ButtonLockCF1336E1-ChioriandDollPicking(easyversion)UOJR28B-环环相扣ATNOMURA2020F-SortingGameATJOISC2017E-壊れた機器(BrokenDevice)SYS......
  • 打靶记录23——Raven2
    靶机:https://download.vulnhub.com/raven/Raven2.ova难度:中目标:获得Root权限+4个Flag攻击方法:主机发现端口扫描路径爆破远程代码注入EXP代码修改反弹shell内核漏洞枚举本地信息收集MySQLUDF提权主机发现sudoarp-scan-l端口扫描和服务发现sudo......
  • 记录一次SQL慢查询优化
    作者:京东物流赫占星一、慢SqL发现在一次需求UAT上线后,本来在测试环境没问题的接口,UAT环境出现了接口超时,通过查询接口日志发现是SQL查询超时了,原因是UAT环境的数据量比测试环境大得多。一般来说,我们可以通过数据库本身的慢查询日志去定位出问题的慢SQL,但是对于京东,易维平台为......
  • 记录一次因为JSON转化错误导致的Feign调用失败
    1、用Feign调用其它微服务的接口失败,因工程定义的GlobalExceptionHandler使得报错信息不明显,接口调用结果如图。日志没有将错误打印出来。2、修改GlobalExceptionHandler,错误日志得以详细地打印出来。3、修改返回字段(Date类型的)结果:Feign调用成功。......
  • JavaScript学习记录6
    第一节算数运算符1.概述JavaScript共提供10个算术运算符,用来完成基本的算术运算。加法运算符x+y减法运算符 x-y乘法运算符 x*y除法运算符x/y指数运算符x**y余数运算符x%y自增运算符++x  、x++自减运算符--x  、x--数值运算符 +x负数值运算符-x......
  • 记录学Delphi安卓编程过程中的一个坑
    记录学Delphi安卓编程过程中的一个坑以下这段代码在win10和在安卓下的执行顺序有区别:abcde为序号:在win中,顺序是abcdef,fs在修改后能保存,在安卓下,顺序是aefbcd,所以fs没能在修改后保存。a:TDialogService.MessageDialog('用户:'+user+'已经存在,但你输入的密码与保存的密码不相同,......
  • 记录学习使用stylecontrols5.8控件的几个坑(二)
    坑2:使用scDBImage显示数据库图片,当DBImageZhaoPian.Picture.LoadFromFile(opd.FileName);//或者TBlobField(dm.FDQPerson.FieldByName('照片')).LoadFromStream(ms);//或TBlobField(dm.FDQPerson.FieldByName('照片')).LoadFromfile(filename);之后,scdbimage能显示图片,当执......
  • Gamma阶段——第15周Scrum Meeting记录
    Gamma阶段——第15周ScrumMeeting记录1.目前进度:(1)完成游戏整体开发,修复部分BUG,可以初步实现面向玩家的使用;(2)进行集成测试,查找不足;(3)邀请部分玩家参与测试以更好的优化软件2.目前团队中存在的问题:(1)未能及时同步工作进度,导致需要额外花时间进行同步工作;(2)存在部分BUG难以修复;......
  • Linux第一课:c语言 学习记录day01
    0、大纲1、Linux命令2、基础内容:进制转换、词法符号、变量常量、输入输出3、语句:分支语句、循环语句、循环控制语句4、数组:一维数组、字符数组、排序、二维数组5、指针:一级指针、二级指针、指针和数组、指针数组、数组指针6、函数:函数基本用法、string函数族、开辟堆区空......
  • 《操作系统真相还原》实验记录2.4——中断处理程序编写
    零、程序编写初步分析中断处理程序编写初步计划如下【图中关系为:调用者->被调用函数】init_all函数用来初始化所有的设备及数据结构,我们打算在kernel内核的main主函数中调用它来完成初始化工作。init_all首先调用idt_init,它用来初始化中断相关的内容。由于初始化也要......