首页 > 其他分享 >2023 逆天记录 - 2

2023 逆天记录 - 2

时间:2023-09-02 09:13:02浏览次数:31  
标签:le log 记录 sum 复杂度 2023 逆天 考虑 质数

CF1370F2 The Hidden Pair (Hard Version)

约定称两个隐藏点为 \(s,t\)。

第一次询问问所有点,这样可以得到 \(s\) 与 \(t\) 的距离 \(len\) 与 \(s\) 到 \(t\) 路径上的一个点。

以这个点为根,进行 dfs,求出每个点的深度。接下来要求出 \(s,t\) 中深度较深点的深度。

考虑二分这个深度。询问时问出这个深度的所有点,如果答案 \(=len\),那么较大深度一定大于二分值。二分后的同时还能求出深度较大点的编号(不妨设其为 \(s\))。

考虑如何求出 \(t\)。以 \(s\) 为根进行 dfs,询问所有深度 \(=len\) 的点,返回的点即为 \(t\)。

这样的询问次数为 \(1+\log n+1=12>11\),还差一次。

由于较大的深度一定 \(\ge\lceil\frac{len}{2}\rceil\) 且 \(\le len\),因此可以省去一次二分,恰好 \(11\) 次。

P9060 [Ynoi2002] Goedel Machine

考虑对于整个序列的答案怎么算。令 \(c_p\) 表示所有数中 \(p\) 的倍数的数的个数。

对于每个质数 \(p\),当选出子集中所有数都是 \(p\) 的倍数时,会有 \(p\) 的贡献,因此贡献是 \(p^{2^{c_p}-1}\)。

对于每个质数算出贡献后相乘就是答案吗?答案是否定的。

加入所有数都是 \(p^2\) 的贡献,那么这个子集的贡献是 \(p^2\),但按照原来方法只计算了 \(p\),增量为 \(p\),因此还要乘 \(p^{2^{c_{p^2}}-1}\),再增量同理。

因此对于每个质数的每次次幂,都可能对答案产生贡献。把所有质数和质数的次幂拿出来,就有 \(O(\frac{n}{\log n}\times \log n)=O(n)\) 个。

一种朴素的计算方法是通过莫队。但是增加或删除元素需要枚举所有质因子与质因子倍数,但次是 \(O(\log^2n)\) 的,因此总复杂度 \(O(n\sqrt n\log^2n)\),无法通过。

考虑对质数进行根号分治。

对于 \(>\sqrt n\) 的质数,每个数中最多只有一个,且只能是一次幂,这部分做莫队是可以做到 \(O(n\sqrt n)\) 的。

对于 \(\le \sqrt n\) 的质数即其次幂,一共只有 \(O(\sqrt n)\) 种,对他们做前缀和,每次询问之枚举每个质数与其次幂,并提前预处理每种出现次数的贡献即可,时间复杂度 \(O(n\sqrt n)\)。

因此设 \(n,m,V\) 同阶,最终时间复杂度 \(O(n\sqrt n)\)。

CF283E Cow Tennis Tournament

正难则反,考虑计算不是三元环的三元组个数。那么就是两个点都指向一个点。

考虑从前往后做扫描线,用线段树维护每个点的反转次数,然后计算出每个点的入度即可。

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

CF542B Duck Hunt

考虑将猎物往左走看成猎人往右走,那么猎人在 \(t\) 时刻开枪能射杀 \(l_i\le t\le r_i\) 的猎物 \(i\)。

令 \(f_{i,j}\) 表示考虑了 \(r\le i\) 的猎物,上一次开枪在时刻 \(j\),能射杀的最多猎物数量。

考虑转移,\(f_{i,\sim}\) 到 \(f_{i+1,\sim}\) 转移时,先不考虑杀新的鸭子,那么等价于 \(\sim\le i\) 的保留原来的值,\(\sim=i+1\) 的要取前缀 \(\max\)。

再考虑开枪,那么就能让 \(f_{i+1,[l,i+1]}\) 的值 \(+1\),而且这个操作只有 \(O(n)\) 次。

直接做复杂度 \(O(V\log V)\),但是考虑 dp 的值域是 \(O(n)\) 的,因此接的前缀 \(\max\) 种类数也是 \(O(n)\) 的,直接维护会变化的位置即可。

时间复杂度被优化为 \(O(n\log V)\)。

ABC313F Flip Machines

对于 \(x\not=y\) 的机器 \((x,y)\),如果他被操作到了至少一次,那么他的期望价值是 \(\frac{a_i+b_i}{2}\)。

因此,对于 \(x=y\) 的机器 \((x,y)\),如果 \(a_x<b_x\),那么就选择他来操作一次,否则是没用的。

接下来考虑将所有卡片分成两个集合,对于 \(a_i>\frac{a_i+b_i}{2}\) 的卡片分到 \(S\),其余分到 \(T\)。那么操作 \(S\) 中卡片期望会减少,操作 \(T\) 中卡片期望会增加。

对于所有的机器,如果 \(x,y\) 同属一个集合,那么 \(S\) 中不选最优,\(T\) 中选择最优。

剩下的问题是对于 \(x\in S,y\in T\) 的卡片是否选择,要求出这个值的最大期望。假设 \(n=|S|,m=|T|\)。

考虑以下两种做法:

  • 枚举 \(S\) 集合中的每个元素是否被选到,那么可以选所有与 \(S\) 中选到的元素有边的 \(T\) 中的元素,直接求和。时间复杂度 \(O(2^nm)\)。
  • 考虑 dp,令 \(f_{i,k}\) 表示考虑了 \(S\) 中的前 \(i\) 张卡片,与 \(T\) 中的 \(k\) 集合点右边的 \(S\) 集合最小负贡献。最后枚举每个 \(T\) 中的卡片是否被边覆盖。时间复杂度 \(O(2^mn)\)。

由于 \(n+m\le N=40\),所以直接对于 \(n,m\) 大小分治即可,时间复杂度 \(O(2^{n/2}n)\)。

P9535 [YsOI2023] 连通图计数

删掉每个点后的连通块个数等价于这个点在圆方树上的度数。称圆方树上的一个度数 \(>2\) 的点为非平凡方点。

首先考虑 \(m=n-1\) 的情况,原图是一棵树,由 prufer 序列易得树的形态为 \(\dfrac{(n-2)!}{\prod(a_i-1)!}\)。

考虑圆方树上只有圆点与方点之间有边,因此圆方树的边数即为 \(\sum a_i\),点数即为 \(\sum a_i+1\)。

当 \(m=n\) 时,图上圆点个数为 \(n\),非平凡方点个数为 \(1\),因此平凡方点的个数为 \(\sum a_i-n\)。

考虑所有点度数和为 \(2\sum a_i\),因此非平凡方点的度数为 \(2\sum a_i-\sum a_i-2(\sum a_i-n)=2n-\sum a_i\)。

随后可以根据 prufer 序列得出圆方树的形态为 \(\dfrac{(n-1)!}{(2n-\sum a_i-1)!\prod (a_i-1)!}\),然后还要乘上方点对应环的形态 \(\dfrac{(2n-\sum a_i-1)!}{2}\)。

当 \(m=n+1\) 时,图上可能有一个或两个方点。两个方点时可以枚举度数,计算方式同上。

标签:le,log,记录,sum,复杂度,2023,逆天,考虑,质数
From: https://www.cnblogs.com/wsyear/p/17673188.html

相关文章

  • 【游记】CSP2023赛前集训游记
    9.1赛前集训的前一天。学校报道的日子,大半天都在yzsy上课。晚上回来没有颓废(很难得啊),把线性基学了一下,然后就开始补数学,从\(9\)点补到\(10\)点。然后只写了几章,看来效率不是只有一点点底啊。然后写了一篇脸滚键盘,总结了一下前半段OI生涯所犯的一些错误,汲取一下经验。想......
  • 工作感受月记(202309月)
    2023年09月01日九月开头日,sofarsogood。我不知道说什么。此时状态是,乏。今日工作一件事,学习containerapp,并且为20的sharesession准备materials。目前已经把基础的内容准备好。自己跟随学习并讲解它(计划中)。今日工作事项:1/一个新案例,问aks的支持日期。目前看不出......
  • 20230803模拟赛
    20230803模拟赛T1摆花sb结论题,考场上题读错了,我更是sb。直接输出最小区间长度。T2打饭题意给定\(n,k\)和序列\(a\)。求一个\(a\)的排列方式使得\[\sum_{i=1}^{n-k}|a_i-a_{i+k}|\]最小,输出这个最小值。题解可以转化成把\(n\)个数分成\(k\)组,且有\(n\bmod......
  • 2023 腾讯全球数字生态大会,腾讯云研发效能创新与实践专场来啦!
    点击链接了解详情......
  • 2023.9.1 AT practise
    ARC072F设“热量”为\(T_1V_1+T_2V_2+...\),最后要求的温度就是\(\dfrac{T_1V_1+T_2V_2+...}{V_1+V_2+...}\),由于最后体积是恒定的,那么我们只需要解决热量的问题即可。设\(f_{i,x}\)表示第\(i\)天晚上只能留下\(x\)升水的最大热量。如果我们把写成函数\(f_i(x)\),我们......
  • 2023 新款特斯拉 Model 3 All In One
    2023新款特斯拉Model3AllInOne特斯拉Model3焕新升级版2023.09.01电动车#新能源#特斯拉#Model3https://www.tesla.cn/model3demos(......
  • 【2023年下半年Java开发行情预测】
    2023年下半年Java开发行情预测,需要考虑多种因素,包括市场需求、技术发展趋势、人才供需关系等。以下是我对Java开发行情的一些预测:市场需求将继续保持增长:随着数字化转型的加速,许多企业需要将业务迁移到云端,这将导致对Java开发人员的需求增加。此外,Java作为一门流行的编程语言,其需......
  • Rocky_linux9网卡启动失败问题记录
    一、故障场景之前虚拟机一直是可以上网的,昨天正常关机后第二天开机网卡始终启动不了。开始排查问题查看网卡信息,发现获取不到IP地址查看网卡状态时发现处于未连接状态nmclicshow二、尝试启动网卡1)直接启用网卡nmclicupens37启动失败出现报错信息,连接激活失败,找不到适合此连接......
  • KubeSphere 社区双周报 | KubeKey 新增网络插件 Hybridnet | 2023.08.18-08.31
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.08.18-2023.08.31。贡献者名单新晋KubeSphereCon......
  • 记录:阅读 C# 中string的源码
    stringUnsafe.AddUnsafe.Add是string中一个常用的方法,它不是用于向某个对象添加元素的,而是用于计算字符在内存中的偏移位置。Split是如何运行的string的split操作是直接进行内存操作实现的,这样可以在不创建大量新字符串副本的情况下,从原始字符串中提取子字符串。它使用......