首页 > 其他分享 >20230708练习总结

20230708练习总结

时间:2023-07-08 14:44:21浏览次数:49  
标签:总结 笛卡尔 线段 练习 20230708 mid times 区间 dp

CF1785D Wooden Spoon

为了方便,将题目中的大小关系反转一下。

这是一个 \(n+1\) 层的满二叉树,第 \(i\) 层每个点都是 \(2^{n-i+1}\) 个人中的胜者。

如果从下往上 dp,需要记录胜利者编号和得到木勺者编号,会爆掉。

那么从上往下 dp。设 \(dp_{i,j}\) 表示第 \(i\) 层 \(j\) 胜利随即一直失败的方案数。

转移方程

\[dp_{i+1,k}=\sum_{j>k}2\times dp_{i,j}\times\binom{j-2^{n-i}-1}{2^{n-i}-1}\times2^{n-1}! \]

前缀和优化后复杂度 \(O(n2^n)\)

CF809D Hitchhiking in the Baltic States

设 \(dp_i\) 表示长度为 \(i\) 的上升子序列最后一个数的最小值。

转移方程很简单,假设当前限制区间为 \([l,r]\):

\[dp_i=\left\{\begin{matrix} \begin{aligned} &\min(dp_i,l)&&dp_{i-1}<l\\ &dp_{i-1}+1&&l\le dp_{i-1}<r\\ &dp_i&&dp_{i-1}\ge r \end{aligned} \end{matrix}\right. \]

暴力转移是 \(O(n^2)\) 的,可以用平衡树优化。

  • 对于第一种情况,找到最大的小于 \(l\) 的数转移。
  • 对于第二种情况,将 \([l,r)\) 内的数向右移一个位置并 \(+1\)。但其实并不需要真的移,第一种情况的时候已经在 \(l\) 前插入了一个数。
  • 对于第三种情况,将第一个不小于 \(r\) 的数删掉。

时间复杂度 \(O(n\log n)\)。

P5044 [IOI2018] meetings 会议

很容易想到,可以找到一个区间内的最大值将其分为两个独立的区间求解。暴力事件复杂度 \(O(nq)\)。

回想上面的过程,很像笛卡尔树,于是笛卡尔树。将问题区间先按类似上面的方法分成两个区间,这样他们的左右端点分别有一个是笛卡尔树上的点。

那么只需对笛卡尔树上的每一个点求出 \(f_{l,i}\) 表示从这个点代表区间的左端点到 \(i\) 这段区间的答案。

假设已经递归完 \(mid\) 的左右儿子,所以 \(f_{l,i}(l\le i<mid)\) 已经求出。不难想到 \(f_{l,mid}=f_{l,mid-1}+h_{mid}\)。又有转移方程:

\[f_{l,i}=\min(f_{l,mid}+(i-mid)\times h_{mid},f_{mid+1,i}+(mid-l+1)\times h_{mid}) \]

暴力转移又是 \(O(n^2)\)。注意到取 min 的左边随 \(i\) 变化的增量为 \(h_{mid}\),右边随 \(i\) 变化增量不超过 \(h_{mid}\),故中间一定有一个分界线,之前取左边,之后取右边。用线段树维护当前答案,需要支持区间赋值一次函数,区间加,线段树上二分。

AGC012E Camel and Oases

转化一下问题,相当于有 \(\log V\) 层,每层有一些线段。每层选一条线段使得这些线段的并集为 \([1,n]\),第一层选的线段固定。

考虑 \(dp\) 出两个信息。选了集合 \(s\) 中层数后覆盖的最长前缀和后缀。枚举第一层每条线段,答案易求。

标签:总结,笛卡尔,线段,练习,20230708,mid,times,区间,dp
From: https://www.cnblogs.com/dks-and-xiao-yu/p/17537234.html

相关文章

  • 第一周总结
      这周学习了Hadoop的入门基础部分内容。Hadoop是什么?Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决,海量数据的存储和海量数据的分析计算问题。广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。Hadoop的三大发行版本Hadoop三大发行版本:Ap......
  • 一周总结第二次
    这周完成了大部分pta固定题目集的试题,看了许多哔哩哔哩上关于Java的课程,黑马程序员的居多,现在感觉对于Java已经算是入门,也使用Java尝试了许多pta固定题目集上的前面一部分较为简单的试题。对于c++也学到许多在学校没有学习或没有深入了解到的东西,例如堆栈的vector以及队列的queue......
  • git 总结
    gitstash视频链接gitstash:工作区已经修改,但是需要在不提交的情况下切换到其他分支,此时可以使用gitstash来存储当前工作区的修改。gitstashpush//将工作区的修改放入一个栈中,此时工作区就变干净了可以push多个修改到栈中可以简写成gitstashgitstashpop//弹......
  • <折半搜索>题型总结
    折半搜索meetinthemiddle算法(又叫splitandmerge算法)顾名思义这种算法就是同时从两个点往中间搜索,直到碰头为止而使等式两边未知数个数相等或尽量均匀分布是用meetinthemiddle算法解决等式问题的常见方法SP4580ABCDEF题目描述给定一个集合S(元素个数100以内)求......
  • 成语积累 20230708
    皓首穷经:皓:白;穷经:专心研究经书和古籍。指一直到年老头白之时还在深入钻研经书和古籍。含褒义。在句中一般作谓语,定语。例句:百尺楼台,~,在这段时光里,他绞尽脑汁,努力学习,只为追求更高的目标。单书白马:单书:古代帝王赐功臣享有世袭爵位和免罪等特权的证件时(如单书铁券),宰白马歃其血,以示......
  • MySQL常用知识点总结
    MySQL常用知识点总结参考地址:(https://maifile.cn/est/a3206887806899/pdf)【一】知识点总结【二】多表查询【三】常用函数【四】Excel数据清洗......
  • 深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇)
    前言系列首发于公众号『前端进阶圈』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇)值类型转换将值从一种类型转换为另一种类型通常称为类型转换,分为隐式强制类型转换和显示强制类型转换。两者的区别在于......
  • 每日总结
    7月6日:今天更为深入的学习了大道至简的第四章,让我感觉到了不一样的java,沟通,人与人之间的沟通是必不可少的,我们要合力完成某个项目便需要沟通。开发项目也需要与客户沟通,知道在各个阶段都想干什么,能干什么,而不是一味的埋头。......
  • 2023.7.7 集训总结
    2023.7.7集训总结期末考试已经结束,文化课的同学们也已经放假,竞赛也停课集训了一段时间。现对这段时间的集训进行总结。CFCF的两场Div1或多或少地体现了我的缺陷:深入思考太慢,分析太久,在OI赛制可能还足够,但是在只有两个小时的CF赛制中却出现了问题,简单的T1要50分钟才能AC,导致T2......
  • 7.7总结
    今天上午起床之后刷了会抖音,并没有像昨天说的那样,去检查idea连接的数据库是否正确,看了会java视频,中午随便吃了点,下午做了会pta,学了一小会前端的知识,然后晚上八点参加部门所拉赞助的活动,参加完就刷视频,然后睡觉......