首页 > 其他分享 >2024.7

2024.7

时间:2024-07-02 22:52:32浏览次数:26  
标签:rt frac log 2024.7 sum 带权 操作

1.Um_nik mod 998 244 353 Contest

F.Is This FFT?

不妨令最后形成的链是 \(1-2-3-\dots -n\) ,然后令 \(p_i\) 是 \(i-{i+1}\) 被删的时间。

如果枚举了 \(p\) 形成的大根笛卡尔树,怎么算答案呢,你发现我们的限制形如,父亲要后于儿子加入;设左子树大小为 \(x\) 右子树为 \(y\) ,则有 \((x+1)(y+1)-1\) 条边必须要在这个点后面加入。连出这些限制,你发现它不考虑方向就形成了一棵树,经典的考虑容斥,等同于钦定一些非树边在对应的树边前面。

对着这个 dp ,你发现是卷积的形式,具体的就是 \(G_i(x)=\sum\limits_{j=0}^{i-1}F_j(x)F_{i-1-j}(x)(1-x)^{(j+1)(i-j)-1},[x^j]F_i(x)=\frac{1}{j}[x^j]G_i(x)\) 。

考虑每算出一个 \(F_i(x)\) 后就对其 DFT ;对于 \((1-x)^{k}\) ,将其拆成 \(k=na+b\) ,然后预处理出 \((1-x)^{na}\) 和 \((1-x)^b\) DFT 后的结果,这是 \(O(n^3\log n)\) 的;我们就容易据此算出对 G DFT 后的结果,IDFT 回去之后就能得到 G ,这是 \(O(n^4)\) 的,总复杂度即 \(O(n^4+n^3\log n)\) 。

K.4

算 K4 的个数。首先使用一种处理无向图的经典方法:将所有点按度数从小到大重标号,考虑一个点有多少大于它的与之相连,可以发现最多只有 \(\sqrt{2m}\) 个点,设这个点数是 \(d_x\) 。

于是枚举 K4 中最小的点 \(x\) ,再枚举两个与之相连的比它大的点 \(y,z\) ,其中要满足 \(y,z\) 相连,现在数有多少合法的 \(w\) ,直接 bitset 数就好了。注意到这里我们只需处理与 \(x\) 相连的 \(w\) ,这里 bitset 长度就是 \(d_x\) 的,单次求 \(w\) 个数就是 \(O(\frac{d_x}{w})\) 的;于是总算量就是 \(\frac{\sum d_i^{3}}{w}\) ,由于 \(d_i\le \sqrt{2m}\) ,\(\sum d_i\le m\) ,这个式子最大值就是 \(O(\frac{m^2}{w})\) 了。

G.MIT

猜测出选 \(k\) 对点的最优点集是由 \(k-1\) 对点拓展而来,我们考虑怎么选这两个点最大化答案。不要拘泥于原形式,把这个最大值看成是 \(\sum dis(p_i,p_{i\bmod m+1})\) 的 max ,这样就能定义选奇数个点的最大值。考虑加入一个点 \(x\),对答案的贡献是什么,取出新的带权中心 \(rt\),那么贡献就是 \(dis(rt,x)\) 。问题是每加入一个点新的带权中心可能不一样,怎么办呢。直接用原来的带权中心充数即可。这样会算错点集大小是奇数时的答案,但偶数一定是对的。

现在相当于找剩余的点中哪个离 \(rt\) 最远,线段树维护剩余点的直径即可。怎么算新的带权中心呢?注意到这个一定在 \(rt\) 到 \(x\) 的路径上,于是取 \(1\) 到 \(rt\) 中最深的 \(2sz_f>sz_1\) 的点,\(1\) 到 \(x\) 同理,然后比哪个更深即可。复杂度 \(O(n\log^2n)\) 。

2.CF1375H Set Merging

交换一下值域和下标,我们要解决的是,对一个序列只考虑值在 \([l,r]\) 的位置的信息,从左往右加起来的结果。且这个”信息“不满足交换律,只满足结合律。

分块,对每个块将其内部值离散化后尝试算出 \(f_{l,r}\) 为:值在 \([l,r]\) 的信息加起来的结果。这个不难分治解决,有 \(T(n)=2T(n/2)+\frac{n^2}{2}\) ,所以这一部分就是 \(\frac{n}{B}*B^2=nB\) 的。每次询问把对应的信息加起来就好了,就是 \(q*\frac{n}{B}=\frac{qn}{B}\) 的。取 \(B=\sqrt{q}\) 即可平衡至 \(n\sqrt{q}\) 。

3.loj2461 完美的队列

观察询问的形式,发现只关心每个操作插入的数多久会被全部弹出。考虑把每次操作用线段树拆开,离线下来,对每个节点的操作分别计算其被完全弹出的时间。

现在相当于是有若干次区间加操作,然后还有一些询问形如,从某个操作出发,到哪个操作才会使得每个位置值的增加量都 \(\geq a_i\) 。这个显然能双指针算。但可以发现这里的区间加操作是很多的,怎么办呢,你发现全局加的操作都是其祖先带来的,其他操作都是其子树内的点带来的。于是按 dfs 的顺序做这些点,用 BIT 来维护这些祖先带来的修改,双指针就只对剩下的这些操作做,计算准确的答案时在 BIT 上求 kth 即可。

分析一下这剩下的操作的总和,它相当于是每个操作插入时经过的节点个数之和,这是 \(O(n\log n)\) 的,总复杂度即 \(O(n\log^2n)\) 。

标签:rt,frac,log,2024.7,sum,带权,操作
From: https://www.cnblogs.com/cwhfy/p/18280701

相关文章

  • 2024.7.1
    转盘锁可以把序列看出一个个元素,+1,-1看成转移,这就成了一个bfs还可以发现,\(a_0,a_1,a_2,a_3\tob_0,b_1,b_2,b_3=0,0,0,0\tob_0-a_0,b_1-a_1,b_2-a_2,b_3-a_3\)状态数只有\(10^4\)#include<bits/stdc++.h>usingnamespacestd;unord......
  • 2024.7.2
    党同伐异可以发现,每次只会是\(a_i\)最大或者\(a_i\)最小的人被淘汰,所以留下的肯定是从小到大排序后的一段区间。还可以发现一个单调性,越靠近左边就越不可能票左边,所以可以通过二分求出左右两边各被票了多少。#include<bits/stdc++.h>usingnamespacestd;const......
  • 2024.7.2 集训
    ###数位DP1.记录:1.是否顶上限;2.是否当前填了的都是前导$0$;3.当前位是否是从左往右数第一位。(2和3是两种做法,2是在Query里只调用一次DFS,3是在Query里枚举第一个非$0$位调用多次DFS)。2.记忆化的数组可以不用记所有内容。3.注意DFS返回时要返回res,而不是记......
  • 云原生周刊:Argo Rollouts 支持 Kubernetes Gateway API 1.0 | 2024.7.1
    开源项目KubetoolsRecommenderSystemKubetoolsRecommenderSystem(Krs)是一个基于GenAI的工具,用于帮助管理和优化Kubernetes集群。buoybuoy是Kubernetes的声明式TUI仪表板。你可以在JSON文件中定义仪表板,它将从Kubernetes集群中获取信息并构建仪表板,以便在......
  • 2024.7.1 - 7.15
    Question1-[ABC360G]SuitableEditforLIS给定一个长度为\(n\)的序列\(A\),你可以执行如下操作恰好一次,最大化LIS的长度:选定一个下标\(x\)满足\(1\leqx\leqn\),选定一个任意的整数\(y\),然后将\(A_x\)替换为\(y\)。\(1\leqn\leq2\times10^5,1\leqA_i\le......
  • 记录:2024.7.1,VMware17免费后的安装方法
    省流:下载地址:VMware17.5.2forLinux:https://www.123pan.com/s/RBdkTd-1rM3d.htmlVMware17.5.2forWindows:https://www.123pan.com/s/RBdkTd-xrM3d.htmlVMware在2024年5月13宣布VMwarepro免费给个人用户使用,并且所有VMware支持都被迁移到博通网站VMwareFusionPro:......
  • 2024.7 - 做题记录与方法总结
    2024/07/01AtCoderBeginnerContest360E-RandomSwapsofBalls期望\(dp\)题问题陈述有\(N-1\)个白球和一个黑球。这些\(N\)个球排成一排,黑球最初位于最左边的位置。高桥正好要进行下面的操作\(K\)次。在\(1\)和\(N\)之间均匀随机地选择一个整数,包括两......
  • 2024.7.1 之后的做题小记
    7.1P7124[Ynoi2008]stcm维护一个\(O(n\logn)\)级别的子树补不删除莫队。Solution1:考虑菊花图,忽略根节点,一个显然的做法是把这些节点扔进线段树,然后遍历某个节点时候就把它的兄弟节点内所有点加进来。这个做法是线段树所有节点大小和即\(O(n\logn)\)。然后在一条链上......
  • 2024.7.1 初识Linux
    1、Linux安装:(1)VmwareWorkstation安装(2)Centos7系统安装(3)使用Mobaxterm远程操控Linux虚拟机2、Linux命令(1)ipaddress查看本机的ip地址(2)cal查看日历用法:cal[选项][[[日]月]年]选项:-1,--one只显示当前月份(默认)-3,--three显示上个月、当月和下......
  • 2024.7~8 训练日记
    \(\color{grey}\bigstar\)可以秒杀的题。\(\color{green}\bigstar\)思考一会儿后可以秒的题。\(\color{blue}\bigstar\)需要较长时间思考的题。\(\color{#F1C40F}\bigstar\)看题解、稍加指点就会做的题。\(\color{red}\bigstar\)看题解后需要较长时间消化,甚至现在都没有......