首页 > 其他分享 >CF1878 A-G 题解

CF1878 A-G 题解

时间:2023-09-27 16:12:50浏览次数:31  
标签:二分 log CF1878 题解 复杂度 端点 代码 赛时

前言

赛时代码可能比较难看。

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\) 的数量。

赛后代码

标签:二分,log,CF1878,题解,复杂度,端点,代码,赛时
From: https://www.cnblogs.com/TKXZ133/p/17732934.html

相关文章

  • 【UVA 536】Tree Recovery 题解(根据遍历序列还原二叉树)
    小瓦伦丁非常喜欢玩二叉树。她最喜欢的游戏是随机构建查找节点中带有大写字母的二叉树。这是她创作的一个例子:为了给后代记录她的树,她为每棵树写下了两个字符串:预订单遍历(根、左子树、右子树)和有序遍历(左子树、根、右子树。对于上面绘制的树,预序遍历是DBACEGF,有序遍历是ABCDEFG......
  • Codeforces Round 742 Div2 A-D题解
    CodeforcesRound742Div2A-D题解A.DominoDisaster这题就是说给出一些2x1tile,然后给出2xn的第一行构造,问第二行这个刚开始想着是啥dp,一看那么多人过了果断改思路,发现这题就是个模拟题,就是把U换成D,D换成U,L和R不影响,然后输出就行了代码#include<bits/stdc++.h>using......
  • P6411 [COCI2008-2009#3] MATRICA 题解
    水题。发现根据限制\(M_{i,j}=M_{j,i}\)可以知道除了主对角线上的点,其他的点都是成对出现的。也就是说如果有一条要求的\(a_i\)为奇数,那么至少有一个\(c_i\)在主对角线上。记\(S=\sum\limits_{i=1}^{k}(a_i\equiv1\pmod2)\),即有\(S\)个要求中\(a_i\)为奇数。主对......
  • IDEA中的java代码Getters和Setters报红问题解决办法【杭州多测师_王sir】
    今天在新的编辑器中导入新项目时,发现很多get、set、toString的相关方法全部报红,仔细排查发现,原来是bean中注解采用lombok来自动生成get、set、toStirng、equals等方法,而新的编辑器未安装lombok plugin,所以全部报红。Lombok简介项目中经常使用bean,entity等类,绝大部分数据类类中都......
  • 2023.09.26 联考总结&题解
    T1derby你考虑直接贪心进行匹配即可,就是说对于每一个\(1\)去匹配最大的\(0\)#include<bits/stdc++.h>usingnamespacestd;intn,m;vector<int>A[2],B[2];intmain(){ freopen("derby.in","r",stdin); freopen("derby.out","w",s......
  • P6344 [CCO2017] Vera 与现代艺术 题解
    在\(V\timesV\)的平面上,\(n\)次修改,每次给定\(x,y,v\),令\(a,b\)为不超过\(x,y\)的最大的\(2\)的整数次幂,则所有\((x+pa,y+qb)(p,q为自然数)\)都加上\(v\),最后有\(m\)次单点询问一个位置的值。\(1\lex,y,V\le10^{18},1\lev,n,m\le2\times10^5\)我们可以......
  • P9566 [SDCPC2023] K-Difficult Constructive Problem 题解
    @目录DescriptionSolutionSol1Code1Sol2Code2Description有一个长度为\(n\)的01字符串\(s\),其中部分位置已给出,在?的位置处需填入一个1或0。一个填充方案是好的,当且仅当存在\(m\)个不同的\(i\)满足\(1\lei<n\)且\(s_i\nes_{i+1}\)。求所有好的填充方案中字典......
  • 预训练Bert模型输出类型为str问题解决
     input_ids=keras.layers.Input(shape=(MAXLEN,),dtype='int32')attention_mask=keras.layers.Input(shape=(MAXLEN,),dtype='int32')token_type_ids=keras.layers.Input(shape=(MAXLEN,),dtype='int32')_,x=bert_model([input_ids,atten......
  • 浏览器输入 http 自动转 https 问题解决方法
    很多朋友问浏览器输入http被自动跳转至https问题,到底该怎么解决呢,其实解决方法很简单,主要关闭浏览器的HSTS功能就可以了IE浏览器1.地址栏中输入edge://net-internals/#hsts2.在Deletedomain中输入项目的域名,并Delete(删除)3.可以在Querydomain测试是否删除成功。Chrome浏览......
  • Redis大key问题解决方案
     Redis的大key如何处理 介绍 大key并不是指key的值很大,而是key对应的value很大(非常占内存)一般而言,下面这两种情况被称为大key:String类型的值大于10KB;Hash、List、Set、ZSet类型的元素的个数超过5000个;为什么会出现大key数据结构不合理:当使用Re......