前言

赛时代码可能比较难看。

为什么 Div3 会出 4 道数据结构。

A

判定 \(a\) 中是否有 \(k\) 即可。

赛时代码

B

奇怪的构造题。

令 \(a_1=1,a_2=3\),其他项由上一项加一开始枚举判定可行性即可,可以简单证明时间复杂度为 \(O(n)\)。

赛时代码

C

容易发现当 \(x\in \left[\dfrac{k(k+1)}{2},\dfrac{k(2n-k+1)}{2}\right]\) 时均可以凑出,因为可行性是连续的,证明显然。

赛时代码

D

额,其实这题什么性质都不用管,直接用平衡树维护翻转操作,剩下的就是模拟。

这里使用了 FHQTreap,时间复杂度为 \(O(n\log n)\),常数稍大,但可以通过。

赛时代码

E

容易发现区间与具有可合并性和单调性(固定左端点,显然区间与随右端点增大单调不升),所以可以直接用 ST 表维护区间与,对每个询问二分右端点即可。

注意二分时要二分最右端点!赛时 WA 了两发。时间复杂度为 \(O(n\log n)\)。

赛时代码

F

我们知道 \(d\) 是一个积性函数,当 \(\gcd(a,n)=1\) 时,有 \(d(n\cdot a) = d(n)\cdot d(a)\),我们容易发现 \(d(a)\) 可以取到任意正整数(\(a\) 取 \(1\) 时为 \(1\),\(a\) 取大质数 \(p\) 时为 \(2\),取 \(p^k\) 时为 \(k\)),因此判定等价于判断 \(n\) 能否被 \(d(n)\) 整除。

设 \(n\) 的唯一分解为 \(\prod p_i^{k_i}\),我们知道 \(d(n)=\prod(k_i+1)\),那么我们就直接用 map 维护 \(n\) 的唯一分解就做完了。

具体的说,当 \(n\gets n\cdot x\) 时,容易发现相当于将 \(n\),\(x\) 的唯一分解的指数相加。而要判断 \(n\) 能否被 \(d(n)\) 整除,我们只需要判断 \(d(n)\) 的唯一分解的每一项的指数是否都小于等于 \(n\) 对应的指数即可。

时间复杂度是 \(O(q(\sqrt V+\log^2 V))\),其中 \(V=10^9\)。

赛时代码

G

赛后花了 40 分钟写完加调完的,是一个比正解劣的做法,还难写。

逐位考虑,考虑某一位时 \(x,y\) 的链是一条 \(01\) 链,我们找到从 \(x\) 到 \(y\) 路径上的第一个 \(1\) 的位置 \(u\),将 \(u\) 到 \(y\) 的路径加 \(1\),再找到从 \(y\) 到 \(x\) 路径上的第一个 \(1\) 的位置 \(v\),将 \(v\) 到 \(x\) 的路径加 \(1\),最后查询全局最大值即可。

链加和查询最大值可以用树剖套线段树维护,找到第一个 \(1\) 的位置可以用树剖套二分加分讨做,需要预处理一个按位的前缀数组。时间复杂度为 \(O(q\log^2n\log V)\),空间复杂度为 \(O(n\log V)\)。实现精细可以通过(比如写一个 \(O(1)\) 清空线段树),不卡常跑了 4500ms。

这个做法有很高的可扩展性,比如可以做到求最大的 \(z\) 的数量。

赛后代码

CF1878 A-G 题解的更多相关文章

  1. 洛谷P3104 Counting Friends G 题解

    题目 [USACO14MAR]Counting Friends G 题解 这道题我们可以将 \((n+1)\) 个边依次去掉,然后分别判断去掉后是否能满足.注意到一点, \(n\) 个奶牛的朋友之和必 ...

  2. 洛谷P2115 Sabotage G 题解

    题目 [USACO14MAR]Sabotage G 题解 本蒟蒻又来了,这道题可以用二分答案来解决.我们可以设答案最小平均产奶量为 \(x \ (x \in[1,10000])\) .然后二分搜索 \ ...

  3. P2882 Face The Right Way G 题解

    题目 Farmer John has arranged his N \((1 ≤ N ≤ 5,000)\) cows in a row and many of them are facing forw ...

  4. Hdoj 2454.Degree Sequence of Graph G 题解

    Problem Description Wang Haiyang is a strong and optimistic Chinese youngster. Although born and bro ...

  5. P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G 题解

    原题链接 POJ的链接 简要题意: 给定一张图,求多少个点,每个点都能到达它. 本题作为强连通分量的入门题. 何为强连通分量?有什么用? 下面一一解释. 首先,我们要确认,这道题目如果不用强连通分量而 ...

  6. USACO07NOV Cow Relays G 题解

    题目 For their physical fitness program, \(N (2 ≤ N ≤ 1,000,000)\) cows have decided to run a relay ra ...

  7. Codeforces Round #677 (Div. 3) E、G题解

    E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...

  8. 2018年第九届蓝桥杯【C++省赛B组】B、C、D、F、G 题解

    B. 明码 #STL 题意 把每个字节转为2进制表示,1表示墨迹,0表示底色.每行2个字节,一共16行,布局是: 第1字节,第2字节 第3字节,第4字节 .... 第31字节, 第32字节 给定一段由 ...

  9. [NOI2009] 诗人小G [题解]

    诗人小G 题目大意 给出 \(n\) 个长度不超过 \(30\) 的句子,要求你对其进行排版. 对于每一行,有一个规定的行标准长度 \(L\) ,每一行的不协调度等于该行的实际长度与行标准长度差的绝对 ...

  10. FJUT寒假作业第二周G题解快速幂

    题目来源:http://210.34.193.66:8080/vj/Contest.jsp?cid=161#P6     题意:求n个数字的乘积对c取摸.主要就是有快速幂扩展到广义幂的过程. 首先题目 ...

随机推荐

  1. .NET周报 【6月第4期 2023-06-25】

    国内文章 如何在long-running task中调用async方法 https://www.cnblogs.com/eventhorizon/p/17497359.html long-runnin ...

  2. 行行AI人才直播第6期:当AIGC时代降临,当代青年如何把握新时代机遇

    AIGC时代的到来,给我们带来了无限的想象空间和创造力.AIGC不仅可以提高内容生产的效率和质量,还可以创造出人类无法想象的新颖和有价值的内容,为数字文化产业.产业互联网.社会价值等领域带来变革性的影 ...

  3. 使用GoEasy快速实现Android原生app中的websocket消息推送

    摘要: GoEasy带来了一项令开发者振奋的消息:全面支持Android原生平台!现在,您可以在Android应用中使用最酷炫的实时通信功能,借助GoEasy轻松实现消息的发送和接收.本文将带您领略G ...

  4. 【SpringCloud】 Eureka

    Eureka 父工程 核心依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...

  5. java反序列化与反序列化

    java反序列化漏洞 JAVA反序列化漏洞是由于开发者重写了readObject方法,该readObject方法方法调用了别的方法,最终执行到了例如Transfrom方法的危险方法 java序列化过程 ...

  6. AI转换视频风格:Stable Diffusion+TemporalKit

    话不多说,开干! 基本方法 首先通过 Temporal-Kit 这个插件提取视频中的关键帧图片,然后使用 Stable Diffusion WebUI 重绘关键帧图片,然后再使用 Temporal-K ...

  7. JMeter 线程组之Stepping Thread Group插件

    JMeter 线程组之Stepping Thread Group插件 测试环境   apache-jmeter-2.13 插件:https://jmeter-plugins.org/downloads ...

  8. Unity的IUnityLinkerProcessor:深入解析与实用案例

    Unity IUnityLinkerProcessor Unity IUnityLinkerProcessor是Unity引擎中的一个接口,它允许开发者在Unity项目构建时对代码进行链接处理.这个接 ...

  9. 【python笔记】使用zip函数迭代多个可迭代对象

    入门使用 # 示例代码 warframe = ["saryn", "wisp", "volt"] counts = [len(n) for ...

  10. [golang]使用gopsutil获取系统信息

    前言 在python中有个psutil库用于获取系统信息,而go语言也有一个类似的库--gopsutil,功能差不多. 项目地址:https://github.com/shirou/gopsutil ...