首页 > 其他分享 >20230207模拟赛题解

20230207模拟赛题解

时间:2023-02-17 14:11:05浏览次数:41  
标签:gcd dfrac sum 20230207 端点 题解 s1 模拟 rightarrow

A-CF755D

考虑每次加边产生的贡献。

发现每次加边的贡献是这条边与别的边的交点数量加 \(1\)。所以可以用线段树或树状数组等数据结构维护,注意要令 \(k=\min(k,n-k)\)。

B-CF746F

考虑双指针维护听的歌的区间,同时用 \(2\) 个 multiset \(s1,s2\) 分别维护只听一半的歌的原长度和全听的歌的原长度。

对于一首新加进来的歌:

若只听一半的歌的数量不足 \(w\) 个且剩余时间足够就加入 \(s1\) 中。

否则若当前歌的长度大于 \(s1\) 中最短的歌的长度且剩余时间足够就加入 \(s1\) 中并把 \(s1\) 中最短的歌加入 \(s2\) 中。

否则若剩余时间足够就加入 \(s2\) 中。

否则就要考虑将左端点弹出,分类讨论左端点在哪个集合中即可。

C-CF1304F2

状态很好想,\(f_{i,j}\) 表示前 \(i\) 行,第 \(i\) 行选 \([j,j+k-1]\) 时前 \(i\) 行拍到动物的最大值。容易发现,\(j\) 一定不超过 \(m-k+1\),再靠右就不可能优了。若不考虑重复选的有转移:

\[f_{i,j}=\max\limits_{p=1}^{m-k+1}\{f_{i-1,p}+\sum\limits_{q=p}^{p+k-1} a_{i,q}\}+\sum\limits_{p=j}^{j+k-1} a_{i,p} \]

,若要减去重复贡献,就把 \([j,j+k-1]\) 这段 \(a\) 的贡献赋为 \(0\),左端点右移时加回左端点贡献,减去此时对应右端点贡献,线段树维护区间加,区间 max 即可。

D-CF1174E

容易发现前缀 gcd 一定是不增的,且后面的一定是前面的约数。将第一个数表示为 \(\prod\limits p_i^{c_i}\),此时排列价值的最大值为 \(\sum c_i\),即每次 gcd 除以一个约数。想要使排列价值最大,只需使第一个数的 \(\sum c_i\) 最大。若要使范围内的一个数的 \(\sum c_i\) 最大,则这个数必然是 \(2\) 的若干次幂乘上 \(3\) 的若干次幂,因为一个 \(5\) 就不如两个 \(2\) 划算了。而且 \(3\) 最多有一次幂,因为 \(3^2>2^3\)。于是设 dp 状态 \(f_{i,j,k}\) 为前 \(i\) 位,此时 gcd 为 \(2^j\times 3^k\),转移的时候 gcd 可以是上一位的 gcd 除以 \(2\) 也可以是除以 \(3\)。

E-CF1679F

对于本质相同的一些数,选一个字典序最小的作为代表,原题相当于求代表数一共有多少个。从前往后填,容易证明第 \(i\) 位能填 \(a_i\) 当且仅当满足每个元素都能和要填的 \(a_i\) 交换的极长后缀 \(a_p,a_{p+1},\dots,a_{i-1}\) 中所有数均小于 \(a_i\)。于是设 \(f_{i,s}\) 为前 \(i\) 位,第 \(i\) 位不能填的数集为 \(S\) 的方案数,答案即为 \(\sum f_{n,S}\)。预处理后面填上 \(i\) 后 \(S\) 会变成的数集 \(to_{i,S}\) 就能转移了。

F-CF809C

打表可以发现这个矩阵是个分形,然后考虑填数的过程。当行列编号和数都减一后,一次看二进制下的每一位,会发现当 \(i,j\) 这一位不同时就会放到左上和右下,相同时就会放到左下和右上,而这个过程和异或很想,所以可以得出一个结论:\(a_{i,j}=(i-1)\oplus(j-1)+1\)。

知道这个结论后考虑在 \(i,j,a_{i,j}\) 都减一的前提下进行数位 DP:\(dp_{0/1,0/1,0/1,k}\) 表示考虑前 \(k\) 位,\(i\) 是否到行的上界,\(j\) 是否到列的上界 \(i\oplus j\) 是否到上界 \(p\) 时有多少种方案(当 \(i,j\) 确定时 \(a_{i,j}\) 也能确定)。

G-CF1698F

首先可证 \(a\) 能转化成 \(b\) 的充要条件是 \(a_1=b_1 \and a_n=b_n\) 且 \(a\) 和 \(b\) 相邻元素组成的无序数对集合相同。

必要性:由于只有两端点相等的区间能翻转,所以 \(a_1\) 和 \(a_n\) 的值不会有变化,且每次翻转区间内部的相邻元素无序数对不会变化,由于两端点相等,所以两端点与其相邻元素数对也不会发生变化。

充分性:可依照一下方案构造。

建一个图 \(G\),将原序列的值作为点,将相邻元素之间建无向边,那么 \(a\) 和 \(b\) 都给出了一条 \(G\) 的欧拉路径 \(A\) 和 \(B\)。容易发现操作是可逆的,所以问题转化成每一次可以操作 \(a\) 和 \(b\),使最后 \(a\) 和 \(b\) 相同。若 \(A\) 和 \(B\) 在 \(x\) 的出边不同,\(A\) 走 \((x,y)\),\(B\) 走 \((x,z)\),容易发现走这步之前与 \(x\) 相连的边还有 \(2k+1(k\in \N)\) 条没走过,也就是 \(k\) 条入边,\(k+1\) 条出边。

  1. 若在 \(A\) 中 \((x,z)\) 是入边,那么 \(A\) 翻转 \(x \rightarrow y \rightarrow \cdots \rightarrow z \rightarrow x\) 后 \(A\) 和 \(B\) 在这步就会走相同的边。\(B\) 中 \((x,y)\) 是入边同理。
  2. 若 \(A\) 和 \(B\) 中 \((x,z),(x,y)\) 都是出边,若 \(A\) 和 \(B\) 中 \((c,x)\) 都是入边,那么 \(A\) 翻转 \(x \rightarrow y \rightarrow \cdots \rightarrow c \rightarrow x\),\(B\) 翻转 \(x \rightarrow z \rightarrow \cdots \rightarrow c \rightarrow x\) 就能保证在这一步走相同的边。发现 \(A\) 和 \(B\) 都要在剩下的 \(2k-1\) 条边中选 \(k\) 条入,\(k-1\) 条出,根据抽屉原理,必有 \(1\) 条入边相同,于是一定能找到 \(c\)。

按照上面的证明构造一种方案即可。

H-CF1418F

构造 \(a,b\),两个数使 \(x_2=\dfrac{x_1}{a}b,y_2=\dfrac{y_1}{b}a\) 且 \(a\mid x_1,b\mid y_1\),不难证明当 \(a=\dfrac{x_1}{\gcd(x_1,x_2)}\) 时 \(a,b\) 存在。所以当 \(a,b,x_1\) 确定时 \(x_1,x_2,y_1,y_2\) 可以确定,所以我们的目标就变成了找出一对 \((x_1,a)\),由于 \(a\mid x_1\),所以有效的 \((x_1,a)\) 只有 \(n\log n\) 对。

当枚举出一对 \((x_1,a)\) 后,就要快速查询是否存在一对 \((y_1,b)\) 满足以下条件:

\[\begin{aligned}y_1\leq m\\\lceil\dfrac{l}{x_1}\rceil\leq y_1\leq\lfloor\dfrac{r}{x_1}\rfloor\\\dfrac{x_1}{a}b\leq n\\a< b\end{aligned} \]

随着 \(x_1\) 的增大,\(y_1\) 的范围会越来越小,所以可以用双指针加 set 维护 \(y_1\) 的取值,同时选取最小的 \(b\)。复杂度 \(O(n\log^2 n)\),需要轻微卡常才能通过原题。

标签:gcd,dfrac,sum,20230207,端点,题解,s1,模拟,rightarrow
From: https://www.cnblogs.com/lxy-2022/p/17129929.html

相关文章

  • CAD坐标显示不全怎么办?CAD坐标常见问题解答!
    今天小编来和大家聊一下浩辰CAD看图王中关于CAD坐标的那些事,比如:CAD坐标为何显示不全?CAD坐标显示结果和之前不一样?以及不能精准捕捉CAD坐标等情况,应该如何轻松解决?今天就和......
  • 0210 模拟题解
    0210模拟题解t1直接枚举\(k\),考虑计算答案。首先发现这个限制等价于存在长度\(\gen-k\)的上升子段。那我们反过来,计算所有上升子段长度都\(\len-k-1\)的方案数......
  • 工程监测多通道振弦模拟信号采集仪VTN的MODBUS 通讯协议
    工程监测多通道振弦模拟信号采集仪VTN的MODBUS通讯协议 在MODBUS协议下,所有寄存器被定义为“保持寄存器”(详见MODBUS通讯协议标准说明),设备支持基于MODBUS协议......
  • 肖sir__面试第十天课程__模拟面试讲解
    模拟面试一、面对面模拟面试1、打印好简历2、带好手机,录制自己回答的问题,总结,反思3、可以携带电4、可以携带耳塞(适合女生)5、语速流程6、礼貌用语(面试官好,结束语:谢谢......
  • CF、AT 杂题题解
    CF1455Fsolution1前\(i\)次操作只会影响到\([1,i+1]\),并且在第\(i\)次操作前,原本在位置\(i\)的数只可能在\(i\)或\(i-1\)。于是就可以考虑设\(f_{i,0/1}\)......
  • YACS 2023年1月月赛 乙组 T4 加与乘(二) 题解
    题目链接应大家的要求,早上起来更一下乙组T4。这一道题目我们发现不仅会加元素了,还会重复执行任务。很容易想到用两个树状数组来维护每个任务的执行次数,以及每个单元格......
  • 用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据
    全文下载链接:http://tecdat.cn/?p=24535最近我们被客户要求撰写关于COPULA的研究报告,包括一些图形和统计输出。最近,copula在仿真模型中变得流行起来。Copulas是描述变......
  • ZJOI 2022 部分题解
    ZJOI2022部分题解太菜了所以只写了两题[ZJOI2022]树https://www.luogu.com.cn/problem/P8329题解玩一玩样例可以得到这样的式子\[ans=\sum_{S\cupT=[n],\S\c......
  • 模拟实现strlen的三种方法
    一、strlen()的工作原理二、模拟实现strlen的三种方法计数器方法指针-指针递归的方法三、库函数实现strlen的思路四、库函数的strlen同上面模拟实现strlen的区别......
  • 牛客练习赛 108 题解
    六道题目的出题人都是我,希望大家玩的开心!https://ac.nowcoder.com/acm/contest/51208A.惊鸿显然位或之后只会变大,因此答案为\(4\times(a_1\text{or}a_2\text{or}......