用户工具

站点工具


2020-2021:teams:hotpot:atcoderbc176

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:hotpot:atcoderbc176 [2020/08/28 09:03]
lotk
2020-2021:teams:hotpot:atcoderbc176 [2020/08/28 13:07] (当前版本)
喝西北风
行 1: 行 1:
 ======AtCoder Beginner Contest 176====== ======AtCoder Beginner Contest 176======
  
-=====A.Orac and Factors=====+=====A ​- Takoyaki ​=====
  
 ====题目大意==== ====题目大意====
  
-对于一个数 ​$n ≤ 10^6,找到它最小的不是1的约数,然后加在这个值,重复 ​$k ≤ 10^9 $+给 $n,x,t,问 $n/x$ 取整乘 ​$t$.
  
 ====解题思路==== ====解题思路====
  
-首先对于偶数,这个数一定是 2,而对于奇数,一次操作之后就会变成偶数,答案是显然的。+模拟
  
-=====B.Orac and Models=====+=====B ​- Multiple of 9=====
  
 ====题目大意==== ====题目大意====
  
-给定一个数列a_n  (n \le 1e6) $, 求一个最长子列满足前一个的下标后一个且 $a_j  > a_i $.+给定一个长为 ​$n \le 2e5的数其是否是9
  
 ====解题思路==== ====解题思路====
  
-这题显然就用一个 DP 就能在 $ O( nlogn ) $ 时间内解决了.+每位数相加看能否整除9即可。
  
-=====C.Orac and LCM=====+=====C ​- Step=====
  
 ====题目大意==== ====题目大意====
  
-给定一个数列 ​s_n (n \le 100000) $ ,令 $ t = \{ lcm({a_i,​a_j})|i < j \} $ ,求 $ gcd(t) ​$+给定长为 ​$n \le 2e5的数组。允许给每个数任意加值,问最少加多少使数组非减。
  
 ====解题思路==== ====解题思路====
  
-考虑对每个素数因子进行分析经过$ lcm,gcd $操作之后相当于求每因子在所有中出现次数倒数第二小的次数并相乘,模拟即可。+原本非减就不管否则加到和前一个数一样大即可。
  
-注意:可以通过先提取出前两个数所含因子来显著减小复杂度+=====D - Wizard in Maze=====
  
-=====D.Orac and Medians=====+====题目大意==== 
 + 
 +给定 $H×W ,H,W \le 1000$ 的一张图,图上有一些不能走的点,支持两种操作,一是走相邻的格子不消耗步数,二是在周围 $5×5$ 的格子内任意移动并消耗一个步数,问最少多少步能够从一点到另一点。 
 + 
 +====解题思路==== 
 + 
 +本题图的范围较大,我们不能直接用SPFA解决,而需要通过一次dfs和并查集处理出连通块,再通过bfs得出结果。 
 + 
 + 
 +=====E - Bomber ​=====
  
 ====题目大意==== ====题目大意====
  
-给定个数列 ​a_n (n \le 100000 ​\le a_i \le 1e9) , 再给定一个数 ​$(\le k \le 1e9) $问能否通过把一区间全部变成它的中位数的方式使序列全部变成$ k $.+张 $H×W H、W \le 3e5的图上,给定一些点 ​$(\le min(H×W,​3e5))$选定一行一列最多覆盖多少点。
  
 ====解题思路==== ====解题思路====
  
-首先,如果不存在 $ k $,​那么答案肯定是否, 在存在 $ k $ 的情况下 ,如果 $ k $ 旁边有大于 $ k $ 的数,那么我们显然可以通过将这个数变成 $ k $ 原本 $ k $ 区间将别的数都变为 $ k $, 进而我们发现如果连续三个中存在两个 $\ge k$ ,​那么可以通过区间操作将大于 $k$ 的数移到 $k$ 的旁边若不存在,则不可能实现 (可以证明任意区间都会被变成小于 $k$ 区间)+我们显然可以处理出覆盖点最多的行列,然后依次枚举检查它们交叉点处有没有点即可有限这个检查是符合复杂度的。
  
-=====E.Orac and Game of Life=====+=====F - Brave Chain=====
  
 ====题目大意==== ====题目大意====
  
-定一个 ​$ n \times m 的 01 矩阵 (1 \le n,m \le 1000)$, ​每个时间个周围存在不同类型点点的类型会发生改变 $ (0 \rightarrow 1, 1 \rightarrow 0) $ 给定 $ t \le 100000 $ 询问每次问 $ i , j $ 位置上 $ p $ 时间类型+长度为3n($n\le 2000$)序列,每个数都是1n次从前五个里挑三删除,若这三个数相等,则结果加。最后剩下若相等结果也加一。最终答案最大值
  
 ====解题思路==== ====解题思路====
  
-我们发现这个模型具有“传染”性质即上时间变了点周围没变在下时间会变且之后一直保持变状态因此我们只需通过 ​$BFS$ 一次求出每点开始间并计算后状态即可。+首先最朴素思想是枚举前次剩下结果,复杂度$O(n^3)$。随后,发现每次转移结果要么是原先的两个,要么是原先的个加之后的三个中的一个,要么是三个中的两个。后两种一共O(n)种情况,记录一下所有剩余情况的最大mx和所有剩余的里有i的最大$f_i$即可。第种除非三全相等,否则结果不。可以证明,三个全相等优情况一定是删这三个。因此可以单独再用一个数cnt记录这个即可。最终答案为$cnt+max\{mx,​dp[a[3n]][a[3n]]\}$
  
2020-2021/teams/hotpot/atcoderbc176.1598576594.txt.gz · 最后更改: 2020/08/28 09:03 由 lotk