首页 > 其他分享 >0730小马拉松 题解

0730小马拉松 题解

时间:2023-07-30 21:23:40浏览次数:47  
标签:LCP 0730 测试点 题解 复杂度 预期 马拉松 100 sim

T358782 阶乘

数学。

测试点 \(1\sim 3\):long long 暴力阶乘。预期 30 分。

测试点 \(4\sim 5\):暴力试除,找出因子 \(5\) 的个数。预期 50 分。

测试点 \(6\sim 7\):

考虑这样一个程序:while(x)x/=5,cnt+=x;

即求出有多少个数是 \(5\) 的倍数,\(25\) 的倍数,\(125\) 的倍数......加起来就是因子 \(5\) 的个数。预期 \(70\) 分。

测试点 \(8\sim 10\):使用高精除。预期 \(100\) 分。

T358793 最大公约数

数学题。

测试点 \(1\sim 3\):枚举两个数,求最大公约数。复杂度 \(O(N^2\log W)\)。预期 \(30\) 分。

测试点 \(4\sim 5\):枚举值域,看有多少个数是它的倍数。复杂度 \(O(NW)\)。预期 \(50\) 分。

测试点 \(6\sim 10\):用桶优化一下。复杂度调和级数。\(O(W\log W)\)。预期 \(100\) 分。

T358804 字符炼金术

分讨 + 差分。

测试点 \(1\sim 2\):暴力枚举每个点的情况。复杂度 \(O(NMAB)\)。预期 \(20\) 分。

测试点 \(3\sim 10\):

考虑将问题抽象化理解。

对于当前空位,将其相邻的所有点放在二维平面上,颜色为横坐标,形状为纵坐标。那么字符 \((a,b)\) 放在此处满足条件,当且仅当以其为中心的“十字”能够覆盖所有点。

对相邻点分类讨论:

  1. 一个点:以其为中心的十字。

  2. 颜色一样:一横条。

  3. 形状一样:一竖条。

  4. 其他:枚举可能的横纵坐标,看能否全覆盖。

最后差分记录贡献即可。复杂度 \(O(NM)\)。预期 \(100\) 分。

T358812 幸运手环

根号分治 + DP。

\(Sub1\):手搓。复杂度 \(O(1)\)。预期 10 分。

\(Sub2\):暴力枚举边长和点。复杂度 \(O(N^2M^2)\)。预期 \(35\) 分。

\(Sub3\):上下两个数相加,求最大子段和。复杂度 \(O(M)\)。预期 \(50\) 分。

\(Sub4\):枚举任意两行,中间部分还是用类似最大子段和的方法算。复杂度 \(O(N^2M)\)。预期 \(70\) 分。

\(Sub5\):显然,\(\min(n,m)\le \sqrt{nm}\),所以我们只需将较小的边作为行即可。复杂度 \(O((NM)^{\frac{3}{2}})\)。预期 \(100\) 分。

T358815 取数游戏

单调队列优化 DP。

\(Sub1\):手搓。复杂度 \(O(1)\)。预期 \(20\) 分。

\(Sub2\):

定义 \(f_{l,r}\) 表示已选区间 \([l,r]\),接下来小 Z 能获得的最大分数。

可以根据当前是谁来进行相应的转移。

小 Z 刚选完:\(f_{l,r}=\min(f_{l_2,r_2})\)。

小 W 刚选完:\(f_{l,r}=\max(f_{l_2,r_2}+\operatorname{sum}(l_2,l-1)+\operatorname{sum}(r+1,r2))\)

特殊的,\(f_{1,n}=0\)。

复杂度 \(O(n^2\log n)\)。预期 \(65\) 分。

\(Sub3\):

优化一下状态设计和转移。

定义 \(f_{i,j}\) 表示已选区间 \([i,i+2^j)\),接下来小 Z 能获得的最大分数。

转移的时候我们发现,新的左端点的可行区间是在不断向右移动的。

所以考虑用单调队列优化。

小 Z 刚选完:由于要取 \(\min\),维护以 \(f_{l,j+1}\) 为权值的递增队列。

小 W 刚选完:由于要取 \(\max\),维护以 \(f_{l,j+1}+\operatorname{sum}(l,l+2^{j+1}-2)\) 为权值的单调递减队列。

复杂度 \(O(n\log n)\)。预期 \(100\) 分。

T359269 打怪游戏

Trie 优化 DP。

测试点 \(1\sim 10\):

容易发现,两个人是一段一段地取,所以可以按段来 DP。

为了方便操作,我们先假设所有怪物都被同一个人干掉,即长度之和减去相邻的 LCP。

现在考虑将区间断开,定义 \(f_i\) 为考虑到第 \(i\) 个怪兽,断开 \((i-1,i)\) 后最小的增量。

显然,相邻两个断点会形成一个新的区间,如图。

减掉白黑的 LCP,加上白白的 LCP。

所以转移方程为:\(f_i=\min(f_j+\operatorname{LCP}(i,i-1)-\operatorname{LCP}(j-1,i))\)。

初始化为 \(f_i=\operatorname{LCP}(i-1,i)\)。

最后加上最初的答案即可。复杂度 \(O(n^2L)\)。预期 \(50\) 分。

测试点 \(11\sim 20\):

注意到 \(L\le 20\),所以考虑将贡献拆开,放到 Trie 树上。

每次转移时,只需要从当前怪物末节点往上跳,对每种 LCP 求最小值。

所以对于 Trie 树上每个节点,维护其子树内最小的贡献,更新时把到根节点路径上的都取 \(\min\) 即可。

复杂度 \(O(nL)\)。预期 \(100\) 分。

欢迎各位来补充!

标签:LCP,0730,测试点,题解,复杂度,预期,马拉松,100,sim
From: https://www.cnblogs.com/HQJ2007/p/17592059.html

相关文章

  • P3375 【模板】KMP 字符串匹配 题解
    前言狗屁不是,建议别看!!! 题目链接P3375【模板】KMP字符串匹配-洛谷|计算机科学教育新生态(luogu.com.cn) 分析先给个例子s1:ABCABCABBs2:ABCABB若使用朴素算法匹配,当匹配到s1:ABCABCABBs2:ABCABB时,朴素算法会跳出,然后匹配下一位。最终匹配到s1:ABCABCABBs2:......
  • 洛谷 P9489 ZHY 的表示法 题解
    Description给定\(\{x_n\}\),\(y\)为任意实数,求出在\([l,r]\)内\(\displaystyle\sum_{i=1}^{n}\lfloor\dfrac{y}{x_i}\rfloor\)有多少种取值。link:https://www.luogu.com.cn/problem/P9489Solution可以表示出的取值一定能被为某个\(x_i\)的倍数的\(y\)表示出。根据......
  • [ABC312] 题解 [D~Ex]
    [ABC312]题解[D~Ex]D-CountBracketSequences一个括号序列\(s\)包含(,),?,?可以填任意括号,问你填完后有多少种合法序列方式。这是一个Classical的括号序列DP,使用这个状态表示可以解决很多括号序列问题:\(dp[i][j]\)表示已经摆好了前\(i\)个字符,有\(j\)个没......
  • BZOJ 4321 queue2 题解
    在硬盘里翻到了当时没推完的这个题,今天补完了最后几步。题目链接:https://hydro.ac/d/bzoj/p/4321对任意相邻两个元素差的绝对值不为\(1\)的\(n\)阶排列计数。\(\mathcal{O}(n^2)\)做法是考虑按照值域由小到大逐步插入,记录\(f_{i,j}\)为长度为\(i\)的排列,一共有\(j\)......
  • bitwarden 私有化部署android无法登陆问题解决
    安卓版bitwarden安装使用中登陆提示“发生错误。Exceptionmessage:java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.”这个错误是因为Bitwarden的证书文件中缺少中间证书导致安卓系统的证书校验异常解决方式,生成带证书链的证......
  • CF1855B Longest Divisors Interval 题解
    原题链接:https://codeforces.com/contest/1855/problem/B题意:给定一个正整数n,找到满足该条件的区间[l,r]的长度的最大值:对于任意l<=i<=r,n均为i的倍数(多组数据)。思路:如果n是奇数,答案显然是1,因为任意两个连续的正整数一定会有一个2的倍数。将这一结论进行推广:......
  • Codeforces Round 889 (Div. 2) 题解
    \(6\)题只做出来\(1\)题,损失惨重A.DaltontheTeacher显然,答案一定和最初的不满意人数有关,所以输入的时候统计一下然后,将不满意的人的座位每两个人交换一次即可,交换次数就是答案如果不满意人数是奇数,那么答案还要加\(1\)时间复杂度\(O(n)\)(输入的复杂度)B.LongestD......
  • 【题解】[ABC312G] Avoid Straight Line(容斥,树上统计,dfs)
    【题解】[ABC312G]AvoidStraightLine题目链接[ABC312G]AvoidStraightLine题意概述给定一棵\(n\)个节点的树,第\(i\)条边连接节点\(a_i\)和\(b_i\),要求找到满足以下条件的三元整数组\((i,j,k)\)的数量:\(1\lei<j<k\len\);对于树上任意一条简单路径,都不同时经......
  • CF1855B Longest Divisors Interval 题解
    题意:给定一个数\(n\),求一个连续区间\([l,r]\)使得\(n\)是区间内每个数的倍数,最大化这个区间的长度(多组数据)。思路:逆向思考一波,(如果一个数\(x\)不是\(n\)的因数,那么\(x\)的倍数不能在区间内。举个例子,比如$n$是13,3不是13的因数,\(3,6,9,12\)也就不可能出现......
  • Codeforces Round 889 (Div. 1) 题解
    A1.Dual(EasyVersion)https://codeforces.com/contest/1854/problem/A1题意给定一个长度为\(n\)的序列\(a_1,a_2,\dots,a_n\),你可以做以下操作:选定两个下标\(i,j(1\leqi,j\leqn)\),\(i,j\)可以相同,然后\(a_i\leftarrowa_{i}+a_j\)。要求构造一种操作......