首页 > 其他分享 >「训练日记」2024 年 4 月日记

「训练日记」2024 年 4 月日记

时间:2024-04-01 21:33:26浏览次数:29  
标签:训练 dfrac sum sumt 2024 斜率 日记

「训练日记」2024 年 4 月日记

点击查看目录

目录

确实有必要写个东西监督自己 .

2024/04/01

感谢奇蛋物语让我理解为什么巨人被喷烂尾 .

Galaxy Union *2700

神金 .

如果不是一棵基环树可以直接换根 DP,是基环树导致的困难是,一些点对之间有两条路径,不知道走哪一条 .

不过如果以环为根,环上两个点子树内的点之间经过的环上路径和这两个点之间是一样的,考虑只处理换上的点之间的贡献,再给子树推下去 .

对于一个环上点 \(u\),仅存在一个环上边 \((v1, v2)\) 使得 \(u\) 顺时针走到 \(v1\) 更优,逆时针走到 \(v2\) 更优,考虑每次移动当前枚举的点 \(u\) 时实时移动边 \((v1, v2)\),感性理解下均摊是 \(O(n)\) 的 .

然后巨量细节就做完了 .

CodeForces Submission .

Gosha is hunting *3000

简记 wqs 二分 .

存在一种直接的 DP 是 \(O(n^3)\) 的,设 \(f_{i, a, b}\) 表示前 \(i\) 个数中选了 \(a\) 个一号球和 \(b\) 个二号球,瓶颈在于需要 \(a, b\) 选了多少个都要枚举 .

考虑能不能删掉一维,我们把所有 \((b, f_{n, a, b})\) 撒到一个坐标系上观察:

image

发现这是一个单调的凸函数,也就是说如果不限制 \(b\) 取多少个(状态改成 \(f_{i, a}\)),全取一定会更优 .

如果能使 \((B, f_{n, a, B})\) 成为最大值那么 \(f_{i, a}\) 自然就会选出来 \(B\) 个二号球,那么就需要构造对于二号球的额外贡献 .

构造二号球的额外贡献,就是每选一个二号球都会减去一次额外贡献,放在坐标系上相当于 \(x\) 坐标每加一,\(y\) 坐标都会减一个常数,发现就是斜率 . 也就是说,我们要构造一个斜率,使得该斜率下穿过这些点的直线中,穿过 \((B, f_{n, a, B})\) 的截距 \(b\) 最大(\(b = y - kx\),即原 DP 值减去额外贡献).

最后只需要思考如何求这个斜率了,发现凸函数的优秀之处在于,与一个凸函数相切的直线的斜率随相切的点的横坐标变大而变小,于是考虑二分这个斜率 .

这样就做到了 \(O(n^2\log n)\),不过其实还可以把一号球也优化掉以达到 \(O(n\log^2 n)\) 的复杂度 .

CodeForces Submission .

Levels and Regions *2400

经典结论是,\(p_i\) 的概率通关期望时间为 \(\dfrac{1}{p_i}\),那么 \(l\sim r\) 为一个级别时 \(r\) 通关的期望时间为 \(\dfrac{sumt_{r} - sumt_{l - 1}}{t_{r}}\) .

朴素 DP 是 \(f_{i, j}\) 表示第 \(i\) 个关卡为 \(j\) 级别的结尾,设 \(g_{i} = \sum_{j = 1}^{i}\dfrac{sum_{j}}{t_{j}}\),\(h_{i} = \sum_{j = 1}^{i}\dfrac{1}{t_{j}}\),有转移:

\[\begin{aligned} f_{i, j} &= \max_{k = 0}^{i - 1}\left\{\sum_{p = k + 1}^{i}\dfrac{sumt_{p} - sumt_{k}}{t_p} + f_{k, j - 1}\right\}\\ &= \max_{k = 0}^{i - 1}\left\{g_{i} - g_{k} - sumt_{k}(h_i - h_{k}) + f_{k, j - 1}\right\}\\ f_{k, j - 1} - g_{k} + sumt_{k}h_{k} &= sumt_{k}h_i + f_{i, j} - g_{i}\\ \end{aligned} \]

是经典的斜率优化 .

太久不碰都不会形式化处理了唉 .

CodeForces Submission .

标签:训练,dfrac,sum,sumt,2024,斜率,日记
From: https://www.cnblogs.com/K8He/p/-/Diary-202404

相关文章

  • 2024.2.13力扣每日一题——二叉树的垂序遍历
    2024.2.13题目来源我的题解方法一TreeMap+深度优先遍历方法二官方题解(自定义排序)数组实现欢迎讨论(做题中遇到的一个问题)题目来源力扣每日一题;题序:987我的题解方法一TreeMap+深度优先遍历在递归形式的前、中、后序遍历中任选一种进行遍历,并在遍历过程中记......
  • 2024.2.16力扣每日一题——二叉树的锯齿形层序遍历
    2024.2.16题目来源我的题解方法一双端队列+标志题目来源力扣每日一题;题序:103我的题解方法一双端队列+标志层序遍历利用双端队列和标志,判断当前应该往那个方向遍历注意:在逆向遍历时,加入后续节点到队列中的顺序需要改变时间复杂度:O(N),其中N为二叉树的......
  • 2024年新算法-冠豪猪优化算法(CPO),CPO-RF-Adaboost,CPO优化随机森林RF-Adaboost回归预
    冠豪猪优化算法(CPO)是一种基于自然界中猪群觅食行为启发的优化算法。该算法模拟了猪群在寻找食物时的集群行为,通过一系列的迭代过程来优化目标函数,以寻找最优解。在这个算法中,猪被分为几个群体,每个群体内的猪会根据当前的最佳解以及群体内部的协作信息来更新自身位置,以期望获得......
  • 2024年4月1日-简单场景绘制、打包验证资源
    先从导入的地图里,把地面复制过来 复制到默认地图 在材质里面找到光,可以修改光的强度 平整场地 用管理里面的删除和添加,弄出一大片平整的地形  把角色放到地图上 选到植物模式,把下载的素材包里的植物拖进去 然后随意丢一点素材到工程里 ......
  • 小球投盒(美团2024届秋招笔试第三场编程真题)
    核心思想用一个队列存储还没有球的盒子一旦有2操作那就剩下1个盒子没有球代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){TreeSet<Integer>q=newTreeSet<>();Scannerscanner=newScanner(System.in)......
  • 洛谷 P9907 [COCI 2023/2024 #1] Mostovi 题解
    题目分析首先可以确定的是需要枚举断边,所以我们希望两次枚举之间能有些关联。不难想到类树形DP的套路,建DFS树,只不过这题除了讨论和父亲之间的边,还要考虑返租边。以下钦定以\(1\)为树根。树边先从简单的树边开始考虑。考虑不经过\(u\)和\(u\)的父亲\(v\),对答案是否产......
  • 九下四月上旬日记
    4.1闲话下午到机房后,没看见\(miaomiao\),\(huge\)和\(field\)轮流坐在教师机前。做题纪要CF573DBearandCavalry详见3.动态规划专题ECF573DBearandCavalry。luoguP4381[IOI2008]Island详见【学习笔记】基环树luoguP4381[IOI2008]Island。4.2......
  • 平均数为k的最长连续子数组(美团2024届秋招笔试第三场编程真题)
    核心思想每个数-k计算前缀和并放入mapkey=前缀和value=当前下标由于需要最长的子数组所以只记录最先存在的下标出现重复的前缀和说明存在平均值为k的区间[pre+1,i]importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Sc......
  • 迟到的总结——代码随想录算法训练营第三十一期
    虽然是迟到了几天,但是该来的还是会来的。在70天的坚持之后,我们成功完成了一期算法训练营,也在毕业之前,给我的本科四年增添了一点ACM的味道,而这种味道以后也不会有了。最初参加算法训练营只是为了考研复试上机考试,但谁知天公不作美,我是注定与这份学历无缘了。好在刷的力扣还能用在......
  • 博客摘录「 linux应急响应」2024年3月12日
    ------***windoes***------方法宸极实验室—『杂项』一篇Windows应急响应的详细笔记-九州信泰的文章-知乎宸极实验室—『杂项』一篇Windows应急响应的详细笔记-知乎利用win+r后输入lusrmgr.msc查询系统是否存在多余的特权、隐藏账户。或者打开控制面板>用户账户......