首页 > 其他分享 >Educational Codeforces Round 151 (Rated for Div. 2) 题解

Educational Codeforces Round 151 (Rated for Div. 2) 题解

时间:2023-08-05 15:12:39浏览次数:37  
标签:151 nxt Educational 那么 frac 题解 操作 考虑 dp

A. Forbidden Integer

显然,当 \(x\not=1\) 时,直接输出 \(n\) 个 \(1\) 即可

否则,如果 \(n\) 为奇数,那就输出 \(\lfloor\frac{n}{2}\rfloor-1\) 个 \(2\) 和 \(3\);如果 \(n\) 为偶数,那就输出 \(\frac{n}{2}\) 个 \(2\)(要看一下 \(k\) 的大小)

B. Come Together

因为 Bob 和 Carol 都是走最短路,所以以 \(A\) 为原点建立坐标系后,只有 \(x_B\) 与 \(x_C\) 正负性一样或 \(y_B\) 与 \(y_C\) 正负性一样才能计算距离

所以直接判断即可

C. Strong Password

记密码为 \(P\),考虑记搜:

令 \(\text{dfs}(i,j)\) 表示当前匹配到的是 \(s_i\),需要查找的是 \(P_j\),那么显然可以对此进行记忆化

考虑到子序列的性质:若 \(P_j=c\),那么我们可以 \(i\leftarrow nxt_{i,c}\),其中 \(i\) 表示从 \(i+1\) 开始到字符串末尾出现的第一个 \(c\),那么显然可以通过后缀的方式求解。那么我们接下来对 \(nxt_{i,c}\) 进行分类讨论:

  • \(nxt_{i,c}\) 不存在,那么此时因为保证 \(l_x\ge r_x\),那么后面一定是存在一种密码的,并且因为选择了 \(c\),此时 \(P\) 一定不是 \(s\) 的子序列,那么此时就是可行的
  • \(nxt_{i,c}\) 存在,那么此时我们就要考虑下一位是否可以得到不是 \(s\) 子序列的位置元素,于是此时就需要调用 \(\text{dfs}(nxt_{i,c},j+1)\)

注意:\(nxt_{a,b}\) 是不包含 \(a\) 的

D. Rating System

不妨记 \(S_i\) 为前 个\(i\)数的前缀和。那么有一个显然的结论是:最优情况下,\(k\) 的一种取值为 \(S_m\),其中 \(1\le m\le n\)

我们考虑进行了前 \(i\)次操作且 \(s\ge k\) 成立后,进行第 \(i+1\) 到 \(n\) 次操作对 \(s\) 产生的影响

那么在不考虑 \(k\) 的保底作用下, \(s+S_n-S_i\)即为最终答案,也即这个数会小于等于真实答案

然后我们再考虑真实答案:\(s\) 达到了某个极大值时刚好达到 \(k\),后面的若干次操作使它在保底作用下不小于 \(k\),最后可能有若干次操作使其增长,其中 \(s\) 一直不小于 \(k\)

既然最后的若干次操作摆脱了 \(k\) 的限制,我们就枚举这个摆脱限制的起始位置

那么第 \(i\) 次操作后面的这段操作对答案的影响即为 \(S_n-S_i\)

考虑前 \(i\) 次操作使 \(s\) 最大,即为前 \(i\) 次操作中 \(S_i\) 的最大值,这个最大值即为 \(k\)

此时在 \(s\) 达到最大值 \(k\) 后,经历第 \(i\) 次操作后,\(s=k\)

E. Boxes and Balls

考虑 DP

主要考虑 \(0\) 比 \(1\) 多 的情况,如果 \(1\) 比 \(0\) 多就取反再算

设计状态 \(dp_{i,j,l}\) 表示,用 \(l\) 使得前 \(i\) 个位置有 \(j\) 个 \(1\)

可以发现移动前后所有 \(1\) 的相对位置不变,所以转移时可以直接令第 \(j\) 个 \(1\) 移到 \(i\)

设第 \(j\) 个 \(1\) 的位置是 \(p_j\),那么有转移 \(dp_{i,j,l}=dp_{i-1,j,l}+dp_{i-1,j-1,l-l-|p_j-i|}\)

暴力转移加滚动数组时间复杂度 \(O(n^2k)\)

考虑压缩一下状态,可以发现,要将 \(x\) 个 \(1\) 挪出前 \(i\) 格,至少需要 \(x^2\) 步,反之同理

所以,前 \(i\) 格在操作过后 \(1\) 的个数与原来相差的值最大为 \(O(\sqrt{k})\)

在这个范围里转移即可,时间复杂度 \(O(nk\sqrt{k})\)

最后要注意,我们可以浪费偶数步进行反复横跳,所以答案还要累加上与 \(k\) 同奇偶性的值

F. Swimmers in the Pool

小学学过的相遇问题和追及问题让我们得到,如果当前时间 \(t\) 和两个人的速度 \(v_a,v_b\) 满足 \(t(v_a+v_b)=2kl\) 或 \(t(v_a-v_b)=2kl\)(\(k\) 为正整数),那么此时这个时间 \(t\) 就是一个“相遇时刻”

首先可以用 FFT/NTT 求出所有符合的 \(v_a+v_b\) 和 \(v_a-v_b\),这样可行的 \(v_a+v_b\) 和 \(v_a-v_b\)我们称作 \(v\)

然后考虑怎么不重不漏地计算出所有 \(t=\frac{2kl}{v}\)

首先如果一个 \(v\) 可行我们可以把它的所有因子也加入集合中,这会方便我们操作

接下来考虑每个 \(t=\frac{2kl}{v}\) 仅在一个地方计算贡献,也就是如果存在 \(v\) 的一个因子也满足上式,那么就不在原先的 \(v\) 处计算这个 \(t\)

所以我们从小到大枚举 \(v\),然后用容斥减掉每个因子的贡献就行

标签:151,nxt,Educational,那么,frac,题解,操作,考虑,dp
From: https://www.cnblogs.com/cantorsort2919/p/17607976.html

相关文章

  • 恋爱入门教学题解
    已知长度为\(n\)的三个两个实数序列\(A,B,X\),定义\(n\)个定义域为\(\R\)的函数\(f_1,f_2,\cdots,f_n\)。其中:\[f_k(x)=\sum_{i=1}^k|a_i(x-x_i)+b_i|\]现在,对于每一个\(k=1,2,\cdots,n\),求\(f_k\)的最小值。可以证明,最小值一定存在。\(n\le......
  • FJOI 树的重心题解
    从零开始暴切省选题题意简述给定一个\(n\)个点的树,每个点的编号从\(1\)至\(n\),问这个树有多少不同的连通子树,和这个树有相同的重心。分析1求重心首先要明确重心的定义。题目中给出:删掉某点\(i\)后,若剩余\(k\)个连通分量,那么定义\(d(i)\)为这些连通分量中点的个数......
  • P4850 [IOI2009] Raisins 题解
    前言:IOI还出这样水的纯记忆化搜索题?还是T4?真令人难以置信。题意:题目传送门一个N×M的矩阵,对于任意一个子矩阵,只能横着或竖着分割,并且分割一次的价值为改子矩阵的元素之和,现要将该矩阵分割成1×1的方格,求最小的分割总价值之和。思路:看到这是个最优化的题,且数据范围很......
  • P9437 『XYGOI round1』一棵树 题解
    赛时一眼换根dp,然后调调调了大概1h+。题目传送门什么是换根dp在大多数树形dp中,我们只考虑对根的贡献,而一部分题目需要算出对所有点的贡献,一个比较显然的做法是对每个点都跑一次树形dp,但是大大增加了时间复杂度,是我们不能接受的。树形dp中的换根dp问题又被称为二次扫......
  • 洛谷 P7911 [CSP-J 2021] 网络连接 题解
    写在前面一道普及级别的题目。CSP-J全国统一命题2021年第三题。本题解来自于一位真正的大佬。传送门https://www.luogu.com.cn/blog/xyf007/solution-p7911。题面信息来源于洛谷。请访问https://www.luogu.com.cn/problem/P7911。声明:本题解非商业用途,一切侵权行为请联系作......
  • We Were Both Childrent 题解
    将一个好理解的方法。题目说有n只青蛙,每只青蛙初始都在0位置,每秒会往前跳a_i。你可以在位置1到n设置一个陷阱,陷阱会抓住经过它的所有青蛙,求你最多能抓住多少青蛙。很简单,只要枚举质因数并判断是否合法即可。intn,ans=0;cin>>n;memset(cnt,0,sizeofcnt)......
  • Balanced Round 题解
    原题链接。题目大意给你一些数,问至少删掉多少数后两两不大于k。我们可以画图理解。最后我们取max(2,1),由于我们求的是合法的,所以还得用长度减去2,最终答案就是2。根据图我们就知道可以遍历一遍数组,用t记录下最长合法序列长度,最后用n-t即可。代码#include<bits/......
  • CF1491B Minimal Cost 题解
    调了两个多小时终于过了,交一发题解。题目分析如果你认真读题就会发现,这道题看似有很多种情况,但障碍的移动方式其实只有几种。如果当所有障碍物都在一列时,可以将某一个障碍水平移动一格,再垂直移动一格或者水平移动两格,那么答案就是v+min(u,v)。当有通路时,则无需移动,答案就是......
  • CF1682B AND Sorting 题解
    首先,我们按照题意,可以用0来作为中间的一个数来交换其他两个数,这种元素肯定是有的,那就是所有不在正确位置上的所有数的AND值,我们可以开一个数组a来模拟这个过程,a_i&a_j=X,那这里的X就起到我们的0的作用了。代码:#include<bits/stdc++.h>#defineintlonglongusin......
  • [NOI2021] 路径交点 题解
    [NOI2021]路径交点题解题意给定一张\(k\)层的有向图,第\(i\)层有\(n_i\)​个顶点,第​\(1\)层与第\(k\)​层顶点数相同。对于第​​\(j\)\((1\leqj<k)\)层的顶点,只会连向第\(j+1\)层的顶点。没有边连向第\(1\)层的顶点,第\(k\)层的顶点不会向其他顶点连边......