自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 【算法讲解】区间极值查询 RMQ(Range Maximum/Minimum Query)

求区间极值的 9 种算法,只会 for 循环太 low 了,连并查集、树状数组、最近公共祖先都能用来查询。总有一款适合你

2023-06-13 16:10:30 348

原创 Codeforces 1838 F Stuck Conveyor 解析

本题是一道交互题在一个 $n*n$ 的传送带矩阵中,你可以控制所有传输带的传送方向(上下左右 `^ v < >`)不过有一个传输带坏掉了,只能固定某个方向,无法调整需要你在 $25$ 次询问(交互)内,找到坏掉的传送带每次交互,可以你做如下询问:将一个箱子放在指定的某一个传送带上,并设置各个传送带的方向每次询问,系统会给出如下答案:将各个传送带设置为你给的方案(坏掉的那个无法设置),然后告诉你箱子最终会落在哪个位置(在 n*n 矩阵之外),如果出现循环,则返回 `-1 -1`

2023-06-06 20:02:49 114

原创 Codeforces 1838 E Count Supersequences 解析

看起来好像只能解决 m = n + 1 的问题,因为空位会随着数字的插入变得越来越多。,将不符合条件的组合排除,剩下的就是符合条件的,而不符合条件的就是。sample 给的很良心,基本过了一定能 AC。但是我们发现一个很重要的现象,就是答案和。那我们就可以利用这个将问题简化,将所有的。,得到的数组是相同的,所以除了第一个空有。,在第二个空位中插入,可以得到。我们将所有的 X 加起来,最后。个数字是固定的,所以剩余的。,在第一个空位插入,可以得到。,答案不变,问题就转化成。种选择,后续的空只有。

2023-06-06 16:47:14 129

原创 Codeforces 1838 D Bracket Walk 解析

(官方解题报告虽然有严格的证明,但一般没有列如何想到这种思路,所以有时候看了解题报告后虽然会了,但对思维没有任何提升)遇到左括号,如栈,遇到右括号,就让栈弹出一个元素,如果没有元素,说明不合法。次操作,每次操作会给一个下标,将下标对应的括号进行取反(左括号变成右括号,或者右括号变成左括号)我们将上面的栈转化成数学公式(只考虑一种括号),将左括号记为1,右括号记为-1,记。问,每一次操作后,是否有一种进行路线可以让最后构成的新字符串成为一个合法括号序列。如果一个括号序列是合法的,那么需要满足两个条件。

2023-06-06 16:12:19 257

原创 Codeforces 1838 C No Prime Differences 解析

将 [1, n \cdot m] 的数字排列进 n * m 的矩阵中,使得任意相邻的数字之差都不是质数。的情况,我们交换一下行列,原偶数行和奇数行都放在一起,使得他们的差为。,不是质数,上下相邻的都相差。不是质数,那么就是答案。,那就一定不是质数了。

2023-06-06 13:14:04 187

原创 Codeforces 1838 B Minimize Permutation Subarrays解析

之间不能包含比k大的数字,所以如果我们将。那么我们的目的就是让其他的组合尽可能不出现。的连续子序列所能形成的排列组合越少越好。这两个排列组合一定会存在,只选1和全选。数字的排列组合,要求你找到两个下标。的排列组合,它的子序列一定要包含。之间,那么一定无法形成长度为。我们来看最容易出现的排列组合是。的位置,判断他们的位置,把。只要不挨在一起,就不会出现。给一个长度为 n 的数组。首先,不管怎么交换,

2023-06-06 12:53:43 153

原创 Codeforces 1838 A Blackboard List

我们观察到数字有负数,而后续往里添加的数字都是非负数,也就是负数不可能生成。所以解法就非常简单了,最小的数字是负数,则输出最小数字,否则输出最大数字,,得到的新数一定是比原来的数要小的,所以最大的数一定是最初的数字。是负数,那么一定是最初的数字。,要求把最初的其中一个数字。都是非负数的情况,根据。个数字,然后任取数组。现在给你乱序后的数组。

2023-06-06 10:58:00 133

原创 【算法讲解】杂项算法——异或哈希(xor-hashing)

异或哈希是个很神奇的算法,利用了异或操作的特殊性和哈希降低冲突的原理,可以用于快速找到一个组合是否出现、序列中的数是否出现了k次

2023-06-01 23:13:10 2144 1

原创 【算法讲解】数论——除法取余,费马小定理

用费马小定理结合快速幂来解决除法取余

2023-05-30 20:38:17 662 1

原创 【算法讲解】DP优化——四边形不等式优化(2)

四边形不等式在更常规的dp方程中的应用

2023-05-26 22:59:31 158 2

原创 Codeforces 1837 F Editorial for Two 解析【难度 2200】

解题思路回顾求极值的问题,通过二分答案转化为判断题用最朴素的思路先找到一条正确路径然后用严谨的数学表单来描述条件,寻找推演公式降低最朴素实现的时间复杂度

2023-05-26 17:04:21 116 1

原创 【算法讲解】DP优化——四边形不等式优化

此优化策略由 Knuth 发现并证明,故称之为 Knuth 优化(Knuth 是算法届的鼻祖,对于算法新手来说,KMP一定不陌生,Knuth 就是三个联合发明人之一的 K)证明过程中依赖四边形不等式,所以也俗称**四边形不等式优化**,适用于当 dp 方程、转移函数符合一定特征时,可以将复杂度降低一个维度属于非常难的 dp 优化,Codeforces 中需要应用此类优化的题目至少是 2400 分以上证明非常困难,如果前置没有掌握这个知识点,遇到相应的题是无论如何都做不出的

2023-05-24 22:39:42 593 4

原创 Codeforces 1832 E Combinatorics Problem 解析【难度 2200】

而找他们的关系,就是将他们展开,然后相减,大部分情况都适用。,x,y,m,k 六个整数,需要进行如下4步操作。第1,3,4步都是非常直观,一直模拟直接计算出来。,其他情况等于0) 就可以根据前置计算所得。的复杂度非常高,由于n最大可能是。我们将其展开,然后相减来得出其关系。主要难点就是第二步,根据a计算b。非常的像,就是当k为k-1时候的。就能通过前序已经计算出的结果得到。括号里边的内容是不是很眼熟,和。,需要找一个方式可以让。我们将b扩展一维,原本的。一般这种情况都是寻找。所以,我们值需要计算出。

2023-05-23 18:09:48 150 1

原创 Codeforces 1832 D Red-Blue Operations 解析【难度 2400】

文章目录题目地址题目抽象题目类型解题思路Step1. 二分答案Step 2. 观察 - 假设 - 证明Step 3. 解题思路step4. 优化代码题目地址https://codeforces.com/problemset/problem/1832/D2题目抽象给一个长度为 n 的数组 a,一开始每个数字都是红色你可以对数组进行多次操作,在第 i (下标从1开始)次操作时,可以选择数组中任意一个数字如果这个数字是红色,则增加 i,并将颜色改为蓝色如果这个数字是蓝色,则减少 i,并将数字改为红

2023-05-23 13:23:28 108

原创 【算法讲解】基础算法——二分查找、二分答案

本文会深入浅出的讲解二分搜索和二分答案。对于之前还不知道的同学,本文会带你入门,了解其本质原理和应用;对于之前已经了解,但每次应用还需要模板辅助的同学,本文会让你不再依赖模板,从背精华到推演对于当前已经;对二分法滚瓜烂熟的同学,本文会再次加强你的记忆,刻入骨子里一辈子都不会忘。二分答案是算法题中的一个利器,可以有效的题目降低难度,一道难题变成中等题,将中等题变成简单题,将简单题变成水题。

2023-05-22 21:46:03 791 5

原创 Codeforces 1832 C Contrast Value 解析【难度 1200】

所以我们只需要找到连续递增/递减的子串,保留头尾元素,所得到的子序列一定是最短的。任务是找 a 的非空子串 b,使得 b 的 CV 等于 a 的 CV。的符号不同时,既代表 ai 是递增或递减的端点,需要保留,计数+1。由此可得推理:连续递增/递减序列的 CV 等于该序列的头尾。给一个长度为 n 的数组 a,定义。求 b 的最短长度是多少。先对 case 进行观察。可以观察到一个规律,

2023-05-21 20:11:06 114 1

原创 Codeforces 1832 B Maximum Sum 解析【难度 1100】

一开始很容易想到贪心:先对数组进行排序,每次操作都选删除数组两头最小的,最终剩下的就是最大的。可以将剩余数字的范围看成一个窗口,当x+1时,窗口右端点+1,左端点+2。,其中 z < x < y < w 且 z + w < x + y。但这是错误的,因为这只是局部最优解,但不是全局最优解。所以我们可以通过O(1) 的复杂度通过。因为要不断的找最大最小值,所以先排个序。个数字被删除,那么剩余的数字就是。的复杂度,所以整体的算法复杂度是。次,那么选项2就是选择剩余的。个数字被删除,最大的。

2023-05-21 19:00:36 221

原创 Codeforces 1832 A New Palindrome 解析【难度 800】

(虽然是回文串,但不归为字符串类型,因为其实没有用到字符串任何特性,换成 int 元素的数组也一样)所以我们只需要考虑其中左半边的字符串就行,因为右半边的跟着镜像变化就行。在此题中,字符串b是由字符串a重新排列而成,所以条件1必然成立。题目要求原字符串经过排列组合后得到的新字符串依然是回文串。我们先来看看,字符串a等于字符串b意味着符合以下两个条件。我们知道回文串的特性是:左半边的串镜像等于右半边的串。当字符串 a 内有任意两个不同的字符。一个字符串能否重新排列成另一个字符串。

2023-05-21 11:45:01 180 1

dancing links2

高级数据结构,舞蹈链,用于搜索,可以达到非常大的剪枝,一些令人发指的复杂度也可以在瞬间搜出结果

2010-01-09

Dancing links

高级数据结构,舞蹈链,用于搜索,可以达到非常大的剪枝,一些令人发指的复杂度也可以在瞬间搜出结果

2010-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除