首页 > 其他分享 >11.22 CW 模拟赛 T3.重复

11.22 CW 模拟赛 T3.重复

时间:2024-11-22 19:59:46浏览次数:1  
标签:right 队列 11.22 T3 times 考虑 CW 单调 left

算法

考虑 \(\rm{dp}\)

其实谁都知道是 \(\rm{dp}\) , 但是推不出来啊

这个问题的关键点在于注意到每次往回走, 必定需要走到之前只访问过一次的位置, 这样算法才有正确性

容易的, 令 \(f_i\) 表示游览结束前 \(i\) 个点的最小时间花费, 由上面的结论可知, 对于 \(f_i\) 往回走的更新, 一定可以用 \(f_j, j < i\) 来表示, 因为是最小的花费, 显然 \(f_i\) 时刻在 \(i\) 点的位置

考虑转移
注意到仅仅有这样的情况:
先往前走到 \(i\) ( 再往后走是无意义的, 一定不优 ) , 然后在回头走, 最后再绕回 \(i\)
这样有一个问题在于有可能绕回来的过程中依然没有到达时间限制 \(T\) , 于是必须要等到 \(T\) , 此时路过的点一定能够全部访问

在这里我有一个误区, 就是同时考虑了往前走在走回来这一情况, 事实上考虑一种即可覆盖

有转移柿子

\[f_i = \min_{j = 1}^{i - 1} \left\{ f_j + a_i - a_j + \max \left[ 2 \times (a_i - a_{j + 1}), T) \right] \right\} \]

显然的, 有 \(f_1 = \max(a_1, T)\) , 答案即为 \(f_n\)

但是这样做是 \(\mathcal{O} (n ^ 2)\) 的, 我们考虑优化

数据结构优化

不太显然的, 将转移柿子中的 \(a_i - a_j\) 提出

有,

\[f_i = a_n + \min_{j = 1}^{i - 1} \left\{ f_j + \max \left[ 2 \times (a_i - a_{j + 1}), T) \right] \right\} \]

直接丢进堆里维护即可, 复杂度 \(\mathcal{O} (n \log n)\)

利用单调性优化

需要一些注意力, 我们观察到 \(i\) 一定时, \(2 \times (a_i - a_{j + 1})\) 和 \(f_j\) 是单调递减的, 同时, 注意到当 \(i\) 增加时, 在之前 \(2 \times (a_i - a_{j + 1}) > T\) , 对于更大的 \(i ^ {\prime}\) 显然也有 \(2 \times (a_{i ^ {\prime}} - a_{j + 1}) > T\)

那么我们就可以想到一种做法, 对于每一次更新 \(a_i\) , 我们就在单调队列中把所有满足 \(2 \times (a_i - a_{j + 1}) > T\) 的 \(j + 1\) 弹出, 其中 单调队列按照 \(a_i\) 从小到大排序

弹出点的时候, 记录其最大值 \(k\) , 然后对于队列中的点, 有
$ f_i = a_n + f_j + T $ , 对于弹出的点, 有 \(f_i = a_n + f_j + 2 \times (a_i - k)\)

每个点进队出队一次, 时间复杂度 \(\mathcal{O} (n)\)

事实上因为 \(a_i\) 单调性, 完全可以使用队列处理

代码

略了, 好累啊

总结

有啥好说的, 练 \(\rm{dp}\)

注意考虑转移时不需要考虑本质相同的转移

写博客就该这样, 不能看着题解抄, 自己理一遍

标签:right,队列,11.22,T3,times,考虑,CW,单调,left
From: https://www.cnblogs.com/YzaCsp/p/18563637

相关文章

  • STM32单片机学习记录(11.22)
    一、STM32    5.2- 对射式红外传感器计次&旋转编码器计次        1.Keil5程序步骤与注意事项:        (1)配置头文件&初始化函数;                        (2)外部中断的配置:配置RCC,打开外设时钟—......
  • [考试记录] 2024.11.22 noip模拟赛19
    T1镜的绮想(mirror)考虑维护中点\(y\)坐标数量,\(mid_y=(a_y+b_y)/2\),不过不用除。枚举所有相同\(x\)坐标点对即可。#include<bits/stdc++.h>usingnamespacestd;constexprintN=5e3+5,MX=2e6+5;inta[N<<1],pos[N<<1],cnt,ans,val[MX<<1];structno......
  • 2024.11.22 考试总结
    赛时T1画了画图,知道最多转两下,对称三次,这六种情况取最优就行了。T2想从最高位贪心,那一定有一个串是\(fs(1,n)\),考虑继续贪心,让第一串\(1\)后面那一串\(0\)尽量有\(1\)与之匹配,思路很清晰,但一开始写就写成了一坨,写写删删,交完10点多一点。T3,没什么想法,最后想回来写暴力,......
  • 11.22 CW 模拟赛 T2.通信
    算法显然的,我们可以先转化问题对于无向图上的\(n\)个点,点之间的边权就是\(\min(\text{图上的欧氏距离的平方和},v)\),求走完所有点时经过的最小边权和手玩样例看下有没有思路?显然的,对于\(50\rm{pts}\),状压可以解决考虑剩下的\(50\rm{pts}\),注意到我们......
  • EMC电磁兼容设计与测试案例分析(第3版)(11.22)
    EMC电磁兼容设计与测试案例分析(第3版)(11.22)EMC电磁兼容设计与测试案例:1、EMC共模电流不入地2、金属外壳可以更好接地、屏蔽线缆:单端/双端接地是否存在连接层导致双端失效3、电感频增而增;电容频增而减;串感、并荣;有概率发生谐振(点),应避开emc测试点4、浪涌与过压:低频、干扰......
  • 11.22 模拟赛
    前言大唐胜屎\(T1\)镜的绮想水签CODE#include<bits/stdc++.h>typedeflonglongll;usingnamespacestd;constintN=5e3+100;constintM=4e6+100;intn,m;structPoi{ intx,y;}a[N],b[N];intnum[M];signedmain(){ autoRet1=f......
  • SpringBoot3+Vue3+AntDesign电商后台管理系统 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、AntDesign、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实......
  • SpringBoot3+Vue3+AntDesign单体多模块项目实践 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、AntDesign、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实......
  • SpringBoot3+Vue3+AntDesign博客后台管理系统源码 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、AntDesign、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实......
  • 2024.11.18至2024.11.22周总结
    本周学习任务清单DP本周黄队详讲了DP有关知识的拓展,从本质到转移方式再到优化等。本质一般DP可以理解为DAG上推式子。特殊的可能需要解方程(直接解&高斯消元),以及图论(最短路,同余最短路)来解决。四大要素状态,最好是无后效性,把不能直接处理的&后面要用到的,都塞到状态里。......