01 2025 档案
摘要:P9565 题解 题面 原题传送门 思路 我们先设一个路径的与和为 val。 首先我们要知道按位与的操作从二进制下的每一位来看,最终的结果为 1 的要求为路径上边的权值在这一位都为 1,然后既然在得到这个结果的过程按二进制拆开,那么我们比大小也按二进制下来比较。 那么对于两个
阅读全文
摘要:CF1994G 题解 题面 原题传送门(洛谷) 原题传送门 实现 暴力 首先,看到异或,我们可以想到可以把每一位分开讨论,发现每一位的所有 a 贡献的答案为其 0 的个数或者 1 的个数,(贡献为 0 的个数则 x 对应的这一位为 1,贡献为 \(1\
阅读全文
摘要:P10580 题解 题面 原题传送门 前置知识 容斥原理 (1) 集合 S 中不具有性质 P1,P2,⋯,Pn 的对象个数为 \(\begin{aligned}|\overline{A_1}\cap\overline{A_2}\cap\cdots\cap\overli
阅读全文
摘要:CF501D 题解 这题应该不止绿吧…… 题面 原题传送门 原题传送门(CF) 思路 相信大家都学过康托展开了吧,应该都知道康托展开的排名为 n∑i=1si×(n−i)!,其中 \(\begin{aligne
阅读全文
摘要:UVA11525 题解 题面 原题传送门 前置知识 正向康托展开 题意很简单,就是求长度为 n 的数组 a 在全部 n 的排列中按字典序排序的排名。 先那一组数据来手玩: 求 4 2 3 5 1 的排名。 第一位是 4,在这这个排列中,还会有以 1,2,3 作
阅读全文
摘要:UVA10870 题解 题面 原题传送门 题意 考虑以下形式的递推函数: f(n)=a1f(n−1)+a2f(n−2)+a3f(n−3)+⋯+adf(n−d)(当 n>d 时) 其中 a1,a2,⋯,ad 是任意常数。 递推的阶数 d
阅读全文
摘要:CF2040C 题解 题面 原题传送门 原题传送门(洛谷) 题面 定义一个序列 a 的权值为 \(\begin{aligned}\sum_{1\leqslant l\leqslant r\leqslant n} \min(a_l,a_{l+1},\cdots,a_r)\end{aligned
阅读全文
摘要:CF380C 题解 题面 原题传送门(洛谷) 原题传送门 题意 给定一个长度为 n 括号序列和 q 个询问区间 [l,r],对于每一个询问的区间中,要求出长度最长的为合法括号串的子串的长度。 思路 看到这种时间复杂度允许在 O(nlogn) 的,有许多区间的题目自
阅读全文
摘要:ABC044D 题解 题面 原题传送门 题意 给定一个 n 和 s,求一个最小的 m 使得 n 在 m 进制下各位数的和为 s。 思路 这类题其实可以往 √n 部分暴力,剩下的利用其在 m,m⩾√n
阅读全文
摘要:P11289 题解 题面 原题传送门 思路 题目浅显易懂,模拟题。 首先按下发命令的 t 给它排序,接下来考虑一个个的分配给打印机。 由于每次会选择等待时间最短的打印机,所以可以用两个优先队列来维护,一个优先队列 q 用来维护当前需要等待的打印机要等多久以及其编号,另一个 \(num
阅读全文
摘要:CF2023B 题解 题面 原题传送门 题意 有 n 个物品,每个物品有 ai 的价值和一个参数 bi,初始每个物品都是未解锁的,只有第一个物品是解锁的。 对于第 i 个物品有以下三种操作选一种。 如果这个物品没有被解锁,结束整个过程。 将第 \(i+1\sim
阅读全文
摘要:P9961 题解 题面 原题传送门 题意 给定一张 n 个点的完全图,每个点有点权 ai,每一次要选一个点满足 ai>=n−1,然后令其他点的点权加一,这个点权减去 n−1,问操作若干次后无法操作时点权分别是多少,如果不会出现操作不了就输出 Recurrent。
阅读全文
摘要:P2425 题解 题面 原题传送门 题意 给定 t 个数,对于每个数 n,求一个最小的 p,使得 n 在 p 进制下是回文数。 思路 首先看到这道题就想要暴力,但是发现 n⩽1010,一看 O(nt) 的暴力复杂度是不行
阅读全文
摘要:P4479 题解 题面 原题传送门 前置知识 树状数组求逆序对。(不会的看后记。) 二维偏序。(不会的可以利用这道题学一学。) 知道斜率公式。 思路 首先,O(n2) 的大家肯定都没有问题。 接下来就开始考虑正解,首先答案是从大到小第 k 大的斜率,满足单调性,就可以二分答案。 那
阅读全文
摘要:CF2014C 题解 题面 原题传送门 题意 城镇里有 n 个人。现在,第 i 个人的财富是 ai 金币。找出 aj=max(a1,a2,⋯,an),将 aj 改为 aj+x,其中 x 是从罐子里找到的非负整数金币。如
阅读全文
摘要:CF2008D 题解 题面 原题传送门 题意 给定一个 01 串,和一个 1∼n 的排列 pi,称两个数 i,j 是互相到达的,当且仅当 i 可以通过若干次 i=pi 而变成 j,询问对于每个 i,可以到达多少个在字符串中的位置为
阅读全文
摘要:P11132 题解 题面 原题传送门 思路 首先看到题目,是一道令人不嘻嘻的构造题,于是不嘻嘻地开始想构造方式。 观察题目发现,如果第 k×m,k∈N 是区间 [(k−1)×m+1,(k+1)×m−1] 的最大值,那么在这个区
阅读全文
摘要:P11078 题解 题面 原题传送门 思路 本蒟蒻太菜了,只会用线段树。。。(准确来说这题是线段森林?) 首先很自然的想到可以按模 k 的余数来分类开线段树,这样每一次在迷雾上的操作就是区间异或,最后于是判断当前节点是否需要改就可以了,思路非常简单,打代码的时候细心点就可以过了。 当然,这样
阅读全文
摘要:太菜了 初赛篇 DAY −30∼−1 没什么好讲的,刷题+做卷子,大概稳定在 70 左右 DAY 0 比赛没什么好说的,和 ozx 一个考场就是空调给我提早半个小时关了真的抽象(热死了),顺着做下来,就最后一题次短路它写的好抽象,不会全蒙 B,估分 50−70。 到家
阅读全文
摘要:P11062 题解 题面 原题传送门_ 思路 首先一眼想到分讨。 a×b≥0,即 a,b 同正负或者有一个为 0 的时候,考虑到每一次 a←a+b 或 b←a+b,只会不断地增加 |a−b|,其的
阅读全文
摘要:P11603 题解 题面 原题传送门 思路 首先,看到题目想到一个性质:对于一个数 x,x 除以一个比 x÷2 大的数的结果一定为 0,再配合上题目给不能超过 65,自然地想到二进制拆分。 首先,先判断肯定有解的情况:a=b=c=d,显然输出 \
阅读全文
摘要:P8624 题解 题面 原题传送门 思路 首先看完题目很自然的想到可以设 dpi,j 表示第 i 个骰子以 j 面朝上的方案数。 首先对立关系由于总共才 6 种情况,所以可以直接用一个二维数组 mpi,j 来存,i,j 排斥为 0,
阅读全文
摘要:CF1951D 题解 题面 原题传送门 题意 题意翻译成数学语言大概是这样的: 给定 n,k(1⩽n,k⩽1018),构造一个长度不超过 60 的正整数序列 a1,a2,a3,⋯,an,记 $b_0=n,c_i=\lfloor\
阅读全文
摘要:CF1984D 题解 题面 原题传送门 题意 (翻译没给得很清楚,一开始我还差点错了。) 给定一个字符串 s,求有多少个子串 t 满足: t≠ a。 s 可以由若干个 t 和若干个 a 组成。 组成 s 的方法至少要有一个 t。 数据范围:$2\leqslant|s
阅读全文
摘要:CF1893B 题解 题面 原题传送门 题意 给定两个数组 a,b,构造一个序列 c,使得其包含 a,b 中的所有元素,保证 a 在其中的相对顺序不变,且最长(严格)上升子序列(LIS(c))最短。 转化一下,也可以理解为,给定两个数组 a,b,要求把 b
阅读全文
摘要:CF1909D 题解 题面 原题传送门 思路 首先,看懂题后直接先观察式子,盯着盯着感觉有点感觉。 x+k=y+z,看这个式子 x,y,z 并没有什么相同的地方,一边有 k,一边没 k,所以考虑两边同时减 2k。 x+k−2k=y+z−2k,整理下。 $x-k=(y-k)+(
阅读全文
摘要:CF1909E 题解 题面 原题传送门 思路 首先,我们考虑一个灯最后亮着的条件是什么。对于一个灯的编号为 light,当且仅当按下的数列中可以被 light 整除的数的个数为奇数的时候灯会亮着。 于是很自然的想到一个很经典的结论:当且仅当一个数为完全平方数时,其因子个数为奇数。 于是就可以
阅读全文
摘要:ABC311G 题解 题面 原题传送门 题意 给定一个矩阵,求一个子矩阵是的子矩阵中的数字总和与子矩阵中的最小值的乘积最大,输出乘积即可。 前置知识 二位前缀和。 单调栈。 单调队列。 对于二位前缀和,其实很简单,看个图就懂了。 上图中红色面积=橙色面积+整个的面积-(橙色面积+蓝色面积)-(橙色面
阅读全文
摘要:CF1628D1 题解 题面 原题传送门 题意 初始时,有一个数 ans=0。 有两个人,第一个人要在 [0,k] 选出一个实数 t。 第二个人可以选择让 ans 加 t 或减 t。 总共有 n 轮,第二个人至少要操作 m 次,且两个人都会使用最优策略。 思路 容易发
阅读全文
摘要:CF358D 题解 题面 原题传送门 思路 挺好的一道 DP 题。 首先分析题目会发现这道题的 DP 有点特殊:每一个点的状态会与前后两道题的状态相互影响与改变。 而观察到,一个点 i 的状态均可以表示成如下两种情况。 先选第 i+1 个物品,再取第 i 个物品。(取物品的操作并不一定是
阅读全文
该文被密码保护。
摘要:SP5150 题解 题面 原题传送门。 前置知识 并查集。 拥有 SPOJ 账号。 思路 首先这题很容易想到是并查集。(没学过的看后记。) 对于一个点 i,我们可以直接设 pai 为 i 的父节点。(跟的父节点设为自己。) 然后就是查询一个元素属于哪个集合的操作。(这很基础。) lon
阅读全文
摘要:P6312 题解 题面 原题传送门 题意 题目的意思非常简单,就是给定一个字符串 s,问 s 是否为回文串。 前置知识 哈希 (没了,真的很简单) 思路(解法) 首先,哈希都会吧?不会的先看这。 其实判断回文最简单的就是分别求从头开始和从尾开始的哈希值,比较即可。 那么哈希值又是怎么求的呢?
阅读全文
摘要:CF191A 题解 题面 原题传送门 题意 给定 n 个字符串,将其中一些字符串取出来并拼接在一起,满足拼接的前面一个字符串的结尾与拼接的后面一个字符串的开头相同,且拼接成的字符串的收尾相同。 例子:asc cdlaks sloa。 (无特殊意义,随便举的例子。) 思路 一看到
阅读全文
摘要:CF1176C 题解 题面 原题传送门 前置知识 离散化(不会的看后记) 思路 首先看题目,题目问最多要删几个数,那不妨换一个角度想,想在数组 a 中有几个数字可以不被删掉,进一步转化为求在长度为 n 的数组里有几个“好的数列”,最后拿总数 n 减去不被删掉的数即可。 实现 首先先给数组
阅读全文
摘要:CF917A 题解 题面 原题传送门 思路 看了下题目,很简单,直接从开头开始爆搜即可,枚举出一种可能,答案就加一。 问题来了,爆搜的过程呢? 容易想到,可以用一个变量 sum 动态统计当前序列未配对的左括号的数量,对于一个 si 有如下两种情况: 若 s[i] 为 (,则 sum
阅读全文
摘要:P7697 题解 前置知识 单调队列求区间最值。(可以看后记) 题面 原题传送门 思路 第一个答案 先看样例解析图: 我们需要满足题目刷的限制,保证刷子完全接触栅栏,也就是每次刷的时候不能刷到空的; 所以,我们可以求得在 i 到 i+x−1 刷的高度就是 $\min(a[j])(j\in[i
阅读全文
摘要:P5186 题解 前置知识 单调队列求区间最值。(可以看后记) 题面 原题传送门 思路 第一个答案 先看样例解析图: 我们需要满足题目刷的限制,保证刷子完全接触栅栏,也就是每次刷的时候不能刷到空的; 所以,我们可以求得在 i 到 i+x−1 刷的高度就是 $\min(a[j])(j\in[i
阅读全文
摘要:CF1604B 题解 题面 原题传送门 题意 给定一个长度为 n 的数组 a,将 a 分成若干段,问是否有一种分段的方法使得每一段的最大上升子序列的长度的异或和为 0。 有多组数据。 前置知识 位运算,知道异或算法相同为假,不同为真,理解并能够运用 1⊕1=0。 数学
阅读全文
摘要:CF1513B 题解 题面 原题传送门 题意 给定一个数组 a,问在 a 中有多少种排列满足对于任意 i(i∈[1,n)) 有 a_1&a_2&a_3&\cdots&a_i=a_{i+1}&a_{i+2}&a_{i+3}&\cdots&a_n。 前置知识 位运算,知道与运算是两者
阅读全文
摘要:CF1721E 题解 题面 原题传送门 前置知识 KMP,基本的字符串函数。 (不懂 KMP 的可以翻到最底下看看后记) 思路 对于每个询问,其实只要把 t 接在 s 的后面跑 KMP 即可。(不懂 KMP 的看后记!) 但这样会 TLE。。。 很遗憾,那就多设一个数组 last。 设
阅读全文
摘要:CF1497E1 题解 题面 原题传送门 思路 看到 n⩽2×105,k⩽20,自然想到 O(nk) 或 O(nk2) 的 DP。 设 f[i][j] 表示前 i 个数中修改 j 个划分的最小段数,g[i][j] 表示表示以
阅读全文
摘要:CF1722G 题解 题意 给定一个正整数 n,要求构造一个长度为 n 的数组,使得数组的奇数项的异或和等于偶数项的异或和。 有多组数据。 前置知识 位运算,知道 a⊕a=0,0⊕a=a。 思路 注意到,题目要求每个数各不相同,于是想到可以让数组为 $1,2,3,
阅读全文
摘要:CF776D题解 题意 有 n 扇门和 m 个开关,门的状态只有开和关两种,初始时只有部分的门是开的。每个开关可以控制多扇门,按下后可以改变对应的门的开关状态(开的关闭,关的开启)。保证每扇门只受两个开关控制,求最少多少次操作后所有的门都会被打开。 数据范围:$n,m\leqslant10^
阅读全文
摘要:P9883题解 算法 c[] 其实就是树状数组,设其原数组是 a[]。 就是问 a[] 最少有多少非零位置,才能使其生成的树状数组 c[] 符合条件。 c[i] 的值实际上是所有使得 j+(j and (−j))=i 的 c[j] 的
阅读全文
摘要:CF1497E2题解 题面 原题传送门 思路 看到 n⩽2×105,k⩽20,自然想到 O(nk) 或 O(nk2) 的 DP。 设 f[i][j] 表示前 i 个数中修改 j 个划分的最小段数,g[i][j] 表示表示以 $
阅读全文
摘要:CF1270B题解 题面 题目传送门 给出一个数列,要求找出一段连续的子数列满足这个子数列的最大值与最小值之差不小于其元素个数(子数列可以是原数列)。 即给定一个数组 a:a1,a2,a3⋯an,要找出两个下标 l,r(l<r,l,r∈[1,n]) 使得 $|a
阅读全文
摘要:CF86A 题解 题意 求 rmaxx=lf(x),f(x)=(99⋯9⏟log10x+1个9−x)×x。 思路 看了看题目,用我们聪明的大脑一想,$f(x)=(10^{\log_{10
阅读全文
摘要:注意:整篇文章含“妈”量有点过高,请在家长指导下阅读,如需阅读文明版,请翻至页底,谢谢。 初赛 DAY -8(2023.9.6) 因为模拟太差,甚至考虑过放弃…… DAY -1(2023.9.15) 反正也是用一周的时间成功复习完了,只能说加油吧! DAY 0(2023.9.16)比赛当天 早上六点
阅读全文
摘要:CF742B 题解 题意 给定两个整数 n,t,并给出一个数组 a:a1,a2,⋯,an,问有多少组 ai,aj 使得 ai⨁aj(i,j∈[1,n])。 思路 首先,先熟悉一下 ⨁(异或)的性质,其实他
阅读全文
摘要:CF1055B 题解 思路 其实就是一道用数组做的模拟题。 就用一个数组 a 记录第 i 根头发的长度,一个变量 ans 来记录目前捡的话要几秒钟,接下来就是要输入 a 数组,那其实也很简单,ans 就动态更新,如果前面一根头发不需要剪,而这根头发大于 l,则 ans++,因
阅读全文
摘要:CF624B 题解 题意 现在有 n 个字母,第 i 个字母最多用有 ai 次,要将这些字母拼成一个尽可能长的字符串,但是每个字母出现的次数不能相等,求这个字符串长度的最大值。 思路 思路其实挺简单的:现将数组排序一下,这样个数一样的字母就排在一起了,接下来就设一个临时变量 cnt
阅读全文
摘要:CF514B 题解 题意 有 n 个恐怖分子,他们的位置都会给出,现在有一个激光枪在 (x0,y0),激光枪每一发子弹都可以打死这一条直线上的恐怖分子,问至少要开几枪。 思路 其实总体思路很简单,先求每一个恐怖分子关于激光枪的斜率(斜率 =(y0−y)÷(x0−x)),但有
阅读全文
摘要:CF385B 题解 思路 其实思路非常简单,就是遍历整个字符串,要是找到一个 bear,答案 ans 就加上这个 bear 前面的字符个数 × bear 后面字符的个数,当然,如果这样,回合前面的 bear 重复,所以答案还要再减去上一个 bear 的个数。 说明 就不说明去重的了
阅读全文
摘要:CF140D 题解 题意 有一个跨年比赛从晚上六点到次日早上六点,总共有 n 道题,第 i 题要花 ai 分钟,每题的罚时为提交时间与 0 点的时间差,在比赛开始时,需要花 10 分钟看题的难度,求能做的最答题数和。 思路 简单的贪心题。 要想做的题数最多而且罚时越少,那就先做
阅读全文
摘要:CF231D题解 题意 给你一个长方体的长,宽,高,再给你一个观测坐标和每一面的上面的数字,问在这个观测点看到的数字之和是多少? 输入顺序 观测的坐标(x,y,z)。 长方体的长,宽,高。(x 轴边长,y 轴边长,z 轴边长) 长方体每个面上的数(ZOX,ZOX 的对面,XO
阅读全文
摘要:CF1250H题解 题意 现在你有 ci 个 i(0⩽i⩽9),问你不能拼的最小数是多少。 思路 先看数据范围:0⩽ci⩽105,暴力一看就是不行的! 那我们就换一种想法: 若 0 的个数大于等于数字个
阅读全文
摘要:CF1593D1题解 题意 把题意转换一下就可以得到:给定一个数列 a1,a2,a3,⋯,an,要求一个数列 b(b 中的数为非负整数)和一个正整数 k,使得 \(a[1]-b[1]\times k=a[2]-b[2]\times k=\cdots=
阅读全文
摘要:CF1227B题解 题意 给一个数组 q,其中: q1=p1。 q2=max(p1,p2)。 q3=max(p1,p2,p3)。 ⋯ qn=max(p1,p2,p3,⋯pn) 求符合要求的 \(p
阅读全文
摘要:CF1178B题解 思路:前缀和+后缀和+乘法原理 首先建立两个数组:a,b,a 用来记录第 i 个字符前面有几个“vv”, b 用来记录第 i 个字符后面有几个“vv”。 那就很明了,用两个循环解决!如果第 i 个字符是 v,第 i−1(i+1)个也是,那前
阅读全文
摘要:CF1023B题解 题意 题目的意思浅显易懂:就是有 n 个物品,第 i 件物品价值为 i,问只取其中两个物品,价值能打到 k 的方案数有几个。 思路 首先先看数据范围,1≤n,k≤1014,本蒟蒻的暴力梦破裂了,只好用用小学学的数学。 我们知道:若 $x+y=
阅读全文
摘要:P1680题解 思路 一看这题,不就是组合题吗?再往下看,涉及到分组,一下子就想到了隔板法,只不过要想隔板还需要一点小处理:因为第 i 必须大于 Ci,于是想到将 n 减去每组的 Ci,于是奇怪的分组就转化为基础的组合题:n 个相同的球放入 m 个不同盒子里,不能
阅读全文
摘要:CF417B题解 博客里使用更佳。 思路 简单的模拟,稍微的分析加上分类讨论就 AC 啦~ 做法 首先,我们要用一个数组 a 来记录记录编号等于它下标的人发送了几个方案,然后就开始开心的模拟:每行输入一个 x(在与 A 相同的第一个程序之前发送的不同程序的数量),k(参赛者的编号,即
阅读全文
摘要:P1409 题解 博客里食用更佳。 题意 题目的意思浅显易懂: n 个人站成一排,小明(临时演员)是第 m 个人,每轮上帝会投一次筛子,分为以下情况: 若掷到 1,则队首的人获胜; 若掷到 2,4,6,则队首的人出队; 若掷到 3,5,则队首的人排到队尾。 问:小明有
阅读全文
摘要:CF449A题解 思路 切法分为这几种情况: 输出 −1 的情况:首先,先分析最多能且几刀,横着切最多可以切 n−1 刀,竖着切最多可以切 m−1 刀,所以 k⩽n+m−2。也就是说当 k>n+m−2 时,直接输出 −1。 当 k<m 且 k<n
阅读全文
摘要:CF45J 题解 原题链接:Planting Trees 题目分析: 当 n=m=1 时,直接输出 1。 当 (n+m)>5 时,就将大数和小数交叉放即可。 当 (n+m)<5 时,是肯定是不行的,输出 −1。 这时就会有人问第二种情况的大小数分别是什么? 大数:$(n+m)/2
阅读全文
摘要:原题链接:Math Show 话归原题,接下来就是快乐的解题时间啦~ (博客里食用更佳) 首先,我们可以发现 n 和 k 的数据范围都非常小,其次,每个子任务分值相同,设 dp[i] 为做了 i 个完整的任务(其余做的是单独子任务)的最多分数将 t 数组排序后暴力求解 也不多说了
阅读全文
摘要:这题就是一题简单的博弈论,如果有一张牌的数量为奇数,则 Conan 赢, 否则 Agasa 赢。 还记得小学时令人害怕的必胜策略吧~ 因为如果所有的牌的数量都有偶数个,则先手拿什么牌,后手就那什么牌,后手就赢了,否则先手胜 思路: 用一个桶排序来统计每一张牌出现的次数,再用 minn 和 $ma
阅读全文
摘要:题意 如果一个字符串同时满足: 1、三个或以上个连着的辅音字母 2、这一段连着的辅音字母不是全部一样的 则这个字符串非法 整个程序都用一个循环来模拟,要满足要求要求可以用一个 num 来统计连续辅音字母的数量,大于等于 3 且 3 个辅音字母不一样,输出空格。 另外,我们可以加一个辅音元
阅读全文
摘要:CF1392C题解 分析 根据题意可得:设任意一个一个正整数 i(n≥i)要是 a[i]<a[i−1] 则这两个数至少需要操作 a[i−1]−a[i] 次。 换一句话说,每组数据的答案为所有前一个数大于后一个数的前一个数减后一个数。(就是上面的字母表示) 话不多说,上代码!!
阅读全文