首页 > 其他分享 >模拟赛全集

模拟赛全集

时间:2024-08-11 15:54:23浏览次数:11  
标签:发现 每个 复杂度 路径 模拟 全集 节点 dp

模拟赛全集

嘉然登场

挺不错的题,发现对于每个数,都有固定的数可以与其相邻,而且排序之后是整个序列的一段后缀

首先我们发现当序列有解的时候一定有数可以和任何一个数相邻,丢进去就完事了

那么我们考虑对于每个值,让能放到它旁边的值全扔进去,之后直接暴力插入任意一个缝隙就好了,注意到这样之后就没有能放到其旁边的数了,直接将其左右两边合并成一个位置就好了

容易发现这样之后会生成一个子问题,和之前没什么区别,接着上面的做就好了,这个可以维护当前缝隙数来做,左右两边指针相遇的时候就求出结果了

Clannad

也是不错的题,发现在线不好做,考虑离线下来做

考虑一个朴素做法,求出区间 lca 之后暴力跳到 lca,之后将经过的点打上标记 树剖加上 bitset \(O(\frac{n^2}{w})\) 即可通过此题

考虑将贡献拆开尽量变成每个下标独立贡献,发现就是每个值到根的链上的路径交长度减去 lca 的深度,后者可以直接用经典 trick 求

问题变成树链推平,查询颜色在 \(l\),\(r\) 之间的节点个数,扫描线之后用后面的覆盖前面的,扫到询问末尾就更新答案,这里树链推平可以树剖之后珂朵莉树维护,至于查询颜色在 \(l\),\(r\) 之间的节点个数,用个树状数组或者线段树就做完了

修水管

挺难的 dp 了,发现求水管修复概率比求期望要简单,考虑分别计算每段水管的概率

因为一轮只能修一个,而且要按照顺序,只需知道有多少轮能让 \(i\) 被判断就有办法计算,所以将 \(dp_{i,j}\) 设为前 \(i\) 条水管中有 \(j\) 条修复了的概率,发现可以如下转移

\[dp_{i,j}=dp_{i-1,j} \times (1-p_i)^{r-j} \]

\[dp_{i,j}=dp_{i-1,j-1} \times (1-(1-p_i)^{r-j+1}) \]

初始化 \(dp_{0,0}=1\) 即可递推出所有的状态结果,最后考虑计算答案,发现 \(P_i\) 就是通过第二个方程转移过来的所有数之和,也就是 \(P_i= \sum dp_{i-1,j-1}\times (1-(1-p_i)^{r-j+1})\) 直接暴力计算即可

最后 \(\sum w_i P_i\) 即所求

小孩召开法 3

多组询问 01 背包,猫树分治

首先暴力跑背包可以得到三十高分

考虑一个分块做法,将每块边界的背包前缀和,后缀和求出,之后合并,只计算答案为查询大小的值,容易发现单次合并复杂度是 \(O(T)\),预处理 \(O(n\sqrt n T)\),询问 \(O(m \sqrt n T)\),上界在预处理和块内,莫队可以达到差不多的复杂度

发现复杂度不对的主要原因是不是每个区间都包含预处理边界,一个区间包含多个,处理块内太磨叽

直接改成分治就做完了

BB

为数不多切掉的有意义题目

考虑子树内有自己节点相当于自己给自己钱,所以每个节点权值变成 \(w_i+son_i-h_i\),sort一遍就做完了

长途巴士

主页单开了一篇写

想你了Delov学长

发现p巨小无比,所以直接写每个数在答案中出现的概率

有式子 \(dp_{i \times j \mod p}=\sum dp_i \times p_j\)

容易发现这玩意是个多项式乘法 plus,就是把中间的加法做成乘法,直接倍增(快速幂)就做完了

串串

其实本来不大想写这题,后来看到大家基本都写的难绷哈希决定写一写

发现对于一个点,若以其为中心的最长回文串既不顶到开头,也不顶到结尾,那么一定不能是答案,如果顶到结尾就是答案,顶到开头的话将它翻转之后的末尾的答案和他一样

所以 manacher 求出以每个字符为中心最长奇回文子串就好了

桥桥

考虑不带修怎么做:显然是离线下来按照重量将询问和边权排序,把大于询问权的边全部插入,这样就不需要维护删边

对于本题,我们可以尝试使用类似的思路,发现因为有可撤销并查集,我们是可以删除后插入的部分边的

所以对询问分块,对于块内没改的边直接插入并查集,对于改过的边,暴力 \(O(\sqrt m)\) 扫一遍判断要不要加入就好了

使用归并排序和 Kaguya 学长教的可撤销路径压缩并查可以做到 \(O(m\sqrt {m \alpha(m)})\) 的优秀复杂度但是我实现太垃圾打不过若干带 \(\log\) 写法

春色春恋春熙风

发现其实是要求只有至多一个奇数出现次数字符的路径最大长度

考虑枚举这个奇数字符,之后对于每条路径,令 \(0\) 表示偶,\(1\) 表示奇,一条路径的状态就是其左右两部分异或起来

根据很多淀粉质题带来的启发,我们最好分别对每个节点都求出以这个节点为 lca 的最长合法路径,对于判断合法路径,由于 lca 到根的那段在两边到根的树链上,所以给每个节点赋上到树根路径上的状态作为权值即可

为了让复杂度正确,我们需要类似其他题,对每个状态开一个桶,之后拼合左右两边

这题和其他套路题不同的是这个桶的状态太多,所以复杂度会退化成 \(O(n^2w)\) (w 是字符集大小),我们发现复杂度主要卡在桶的合并上,这个是 \(O(n^2)\) 的时空复杂度,这时候采用线段树合并即可获得高贵的大常数 \(O(wn \log n)\) 做法,注意空间复杂度为 \(O(nw)\) 卡卡常就能在 CF 上过掉

但是我们还有更加优秀的做法,当处理每个结点时

  1. 递归处理轻儿子
  2. 暴力跑一遍轻儿子子树,清空当前桶
  3. 处理重儿子,不清空桶
  4. 处理轻儿子,直接合并

我们发现这让轻儿子会被遍历好多好多遍,但是我们可以证明其复杂度是正确的,根据树剖结论即可发现复杂度为小常数 \(O(wn \log n)\),容易发现这时候空间复杂度是 \(O(2^w)\),不过貌似使用 unordered_map 可以将空间搞到 \(O(n)\),但是小常数的优势也就没了(其实手写哈希表应该能规避类似的问题)

所以学长为什么不放线段树合并过

雪色雪花雪余痕

转化第二个限制,发现是说这是一个凸壳,就是说 \(\delta a\) 单调递增

标签:发现,每个,复杂度,路径,模拟,全集,节点,dp
From: https://www.cnblogs.com/hzoi-wang54321/p/18353511

相关文章

  • Amber24安装教程 Amber24远程安装 生物分子模拟 Amber GPU加速版安装 Amber24 和 Ambe
    文章引言:关于Amber24安装详情放到了第6点,可直接目录跳转哦目录文章引言:安装有关的放到第6点,请往下看哦1.性能的飞跃:显著提升的计算效率2.炼金术模拟的创新:自由能计算的全新高度3.更多模拟选项:灵活而强大的工具集4.独有的功能:Amber24带来的新技术5.与Amber22的......
  • 基于模拟退火算法求解旅行商(TSP)问题(附word文档)
    基于模拟退火算法求解旅行商(TSP)问题(附word文档)......
  • [赛记] 暑假集训CSP提高模拟17
    符号化方法初探100pts签到题?做了得有1.5h+;考虑全是正数或全是负数的情况,那么我们可以对其做一次类似于前缀和或后缀和的操作,需要$n-1$次;所以我们只需将数列中的数全部转化成正数或负数即可,具体地,找出所有正数的和和所有负数的和,如果前者比后者要大,那么就将所有正数加起......
  • 【STM32】ADC模拟数字转换-规则组单通道
    本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 目录 ADC简介ADC时钟配置引脚模拟输入模式规则组通道选择ADC初始化 工作模式数据对齐 触发转换方式连续与单次转换模式扫描模式组内的通道个数ADC初始化框架ADC上电ADC校验 获取转换数......
  • [考试记录] 2024.8.10 csp-s 模拟赛18
    80+20+0+70=170第三题应该有10分暴力的,但我没打。T1星际旅行题面翻译总共有n个节点,m条路径,要求其中m-2条路径走两遍,剩下2条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同。样例#1样例输入#15412131415样例输......
  • NOIP 模拟赛
    Round11.1得分105。rk倒1。1.2BB键盘上下左右和回车回格都坏的,只能用屏幕键盘。也一定程度影响了心态,导致不想打暴力甚至。但是题感觉真没那么难,破防了一会过后觉得自己不能继续颓了。把基础打牢。套路积累已经够了,回来卷一些基础的东西吧。比如CF前面的题。1.3So......
  • 【无人艇】模拟退火算法红蓝无人水面艇舰队对抗演练和攻防【含Matlab源码 6808期】
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信或扫描文章底部QQ二维码。......
  • 暑假集训CSP提高模拟17
    \[暑假集训CSP提高模拟\operatorname{EIJ}_{2}(6)-1\]\(\operatorname{EIJ}_{k}(A)\)定义为有\(A\)个球,\(k\)个盒子,盒子相同,球不同,把全部球放入的方案数Hint易知\(\operatorname{EIJ}_k(A)=\dfrac{A^k}{k!}\),详见这篇文章其实我觉得构造的过程更有意思:对一个给定的正......
  • 暑假集训csp提高模拟17
    赛时rank16,T1100,T250,T325,T425T4是简单题,但因为转移方程没有继承上一位状态,然后就挂了T3写了个神秘的状压,打了25的部分分T2暴力,T1正解T1符号化方法初探[ABC081D]Non-decreasing考虑最大值和最小值若\(abs(max)>abs(min)\),则将所有的负数加上最大值使其变为正,前缀......
  • 『模拟赛』暑假集训CSP提高模拟17
    RankA.符号化方法初探原[ABC081D]Non-decreasing挺水的,不过赛时想了错解。赛时做法是都塞到一个set里一遍推过去,如果比上一个小就lower_bound找一个最接近差的数加上,不过它存在比较大的问题。首先全是负判不了,会进入死循环;其次用map存下标也会出现存在两个相同的......