摘要: 注:本文只是代理,原文在此处。 总所周知,**【数据删除】**OJ 是一个题单 OJ,所以这里就是它的罪行((( 以洛谷作为主要的OJ(以P开头的就是洛谷) 写问号的有待补充 第一部分 基础算法 递推算法 例题1 → P1595 信封问题 例题2 → AcWing96. 奇怪的汉诺塔 例题3 → P 阅读全文
posted @ 2021-05-27 16:29 Jayun 阅读(305) 评论(0) 推荐(1) 编辑
摘要: 链接: 洛谷 题目大意: 对于 \(n\) 点,点有点权,从一开始,给你 \(m\) 个相对关系。求出点权和的最小值。 \(1\leq n,m\leq 10^5\)。 正文: 转化关系: $$\begina_i=a_j&\rightarrow a_j\leq a_i,a_i\leq a_j\ a_i 阅读全文
posted @ 2021-05-27 16:12 Jayun 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 LOJ 题目大意: 一辆汽车从 \((1,1)\) 到 \((N,N)\)。 在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在行驶过程中应遵守如下规则: 汽车只能沿网格边行驶,装满油后能行驶 \(K\) 条网格边。出发时汽车已装满油,在起点与终点处不设油库。 汽车经过一 阅读全文
posted @ 2021-05-22 08:29 Jayun 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 在一个有向图上找到一个二元组 \((u,v)\) 满足有一条 \(1\to u\to v\to n\) 的路径,并且 \(Val(v)-Val(u)\) 最大。 正文: \(Val(v)-Val(u)\) 最大,相当于 \(Val(u)\) 尽量小且 \(Val(v)\) 阅读全文
posted @ 2021-05-20 17:31 Jayun 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 判负环。 正文: 如果一个点被访问 \(n\) 次就说明有负环。 代码: const int N = 2e3 + 10, M = 6e3 + 10; inline ll Read() { ll x = 0, f = 1; char c = getchar(); while 阅读全文
posted @ 2021-05-19 20:42 Jayun 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 求出 \(\lfloor n^a+n^b\rfloor\) 相等时,\(n\) 的上下界的差值。 正文: 如果不取整,函数 \(f(x)=x^a+x^b\) 的图象是这样的: 我们要找的是最大的 \(x_1-x_2\)。 现在我们知道 \(f(x_1)-f(x_2) 阅读全文
posted @ 2021-05-16 16:12 Jayun 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 有 \(n\) 个商品,每一样商品都有收益 \(P_i\) 和过期时间 \(D_i\),每天只卖一个商品,一旦超过了过期时间,商品就不能再卖。 正文: 收益由大到小枚举,每个商品卖的时间尽量设置在后面,用并查集维护当前商品的日期最晚还能设置在哪里。 代码: inline l 阅读全文
posted @ 2021-05-15 10:28 Jayun 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 在一个没有自环的有向图找出一个长度为三的环。 \(n\leq5000\)。 正文: 暴力 \(\mathcal{O}(n^3)\),直接枚举 \(i,j,k\),或者是预处理一个反图,再通过枚举 \(i,j\),找能到达 \(i\) 的点和 \(j\) 能到达的点的交集。 阅读全文
posted @ 2021-05-15 09:33 Jayun 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 在给定的 \(N\) 个整数 \(A_1,A_2……A_N\) 中选出两个进行 \(xor\)(异或)运算,得到的结果最大是多少? 正文: 01trie 板子。 代码: const int N = 2e6 + 10; inline ll READ() { ll x = 0, f = 1; 阅读全文
posted @ 2021-05-15 07:25 Jayun 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定 \(N\) 个字符串 \(S_1,S_2…S_N\),接下来进行 \(M\) 次询问,每次询问给定一个字符串 \(T\),求 \(S_1 \sim S_N\) 中有多少个字符串是 \(T\) 的前缀。 正文: Trie 板子。 代码: const int N = 1e6 + 10; 阅读全文
posted @ 2021-05-14 22:17 Jayun 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 有 \(n-1\) 个数,第 \(i\) 数是 \(i+1\)。在这其中选两组数,求这两组数不互质的方案数。 \(n\leq500\)。 正文: 30pts: 分解质因数,在 \(n\leq30\) 以内的素数只有 \(10\) 个,设 \(f_{i,a,b}\) 阅读全文
posted @ 2021-05-14 20:20 Jayun 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 在一个圆环上从两个位置出发转圈圈,经过的位置随机变换,求环的最大长度。 正文: 假设我们以及知道了环的最大长度 \(l\)。由于这是一个环,所以 \(A\) 串的部分一和 \(B\) 串的部分二、\(A\) 串的部分二和 \(B\) 串的部分一必定相同: 一个串的第 阅读全文
posted @ 2021-05-12 13:48 Jayun 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 已知一个字符串 \(S\),求它有多少个形如 \(A+B+A\) 的子串(\(|A|\geq k,|B|\geq 1\))。位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一子串。 \(|S|\leq1.5\times10^4,k\leq100\)。 正文: 本题暴力枚 阅读全文
posted @ 2021-05-06 16:48 Jayun 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 求一个字符串由多少个重复的子串连接而成。 正文: 我们定义被重复的子串是 \(t\)。 如果最长前后缀的长度可以等于 \(n\),那么一段重复的字串,它的最长前后缀,肯定是 \(n\);如果必须小于 \(n\),则它的最长前后缀是 \(n-\text{len}(t)\)。 我们可以通过这 阅读全文
posted @ 2021-05-05 15:46 Jayun 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 求两个矩阵的最大公共子正方形矩阵的边长。 \(n\leq 50\)。 正文: 暴力是 \(\mathcal{O}(n^7)\),考虑优化暴力。 既然是找“公共”,那么一定会判相同,可以用二维 Hash 和 Hash 表解决。 然后就有了一个 \(\mathcal{O 阅读全文
posted @ 2021-05-05 10:52 Jayun 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 在一个 \(n \times m\) 的矩阵内求出上下左右都对称的正方形。 \(1\leq n,m\leq 1000\)。 正文: 对于本题有一个性质:一个合法的正方形内部也是合法的正方形。 然后可以得到一个暴力的思路。对于每一个点往外扩张,每次判合法就可以只判断最 阅读全文
posted @ 2021-05-04 12:51 Jayun 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给你几个人的名字和他们的生日,求生日相同的人的生日和他们的名字。 正文: 对于每个生日开一个 \(\texttt{vector}\),我开到了 \(\texttt{1231}\),如果足够聪明可能可以只开到 \(\texttt{366}\)。 代码: inline ll READ() { 阅读全文
posted @ 2021-04-29 13:52 Jayun 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定两个字符串 \(s,t\),\(s\) 可以旋转,问 \(t\) 是否可能成为 \(s\) 的子串。 正文: 把 \(s\) 复制一遍,找子串直接 KMP。 代码: const int N = 110; inline ll READ() { ll x = 0, f = 1; char 阅读全文
posted @ 2021-04-29 13:31 Jayun 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定一张 \(N\times M\) 的地图,地图中有 \(1\) 个男孩,\(1\) 个女孩和 \(2\) 个鬼。 字符 . 表示道路,字符 X 表示墙,字符 M 表示男孩的位置,字符 G 表示女孩的位置,字符 Z 表示鬼的位置。 男孩每秒可以移动 \(3\) 个单位距离,女孩每秒可以 阅读全文
posted @ 2021-04-14 17:11 Jayun 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有一个 \(N\times M\) 的矩阵,每个位置可能是硬地(用 . 表示),易碎地面(用 E 表示),禁地(用 # 表示),起点(用 X 表示),终点(用 O 表示)。 你的任务是操作一个 \(1\times1\times2\) 的长方体。 这个长方体在地面上有两种放置方式,“立” 阅读全文
posted @ 2021-04-13 13:29 Jayun 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 构造 \(q\) 个二元组 \((x_i,y_i)\),每个二元组的操作是把 \(a_{x_i},a_{y_i}\) 的值都变为 \(f(a_{x_i},a_{y_i})\)。\(f(x)\) 意义不重要。顺序对二元组进行操作,你要使得最后 \(a_i\) 最多只有 阅读全文
posted @ 2021-04-03 09:13 Jayun 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 给出 \(n\) 个数 \(q_1,q_2,\cdots,q_n\),定义: $$F_j=\sum_^{j - 1} \frac{q_i \cdot q_j}{(i - j)2}-\sum_{i = j + 1} \frac{q_i \cdot q_j}{(i - j)^2 阅读全文
posted @ 2021-03-26 21:04 Jayun 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 设 \(f(x)\) 表示 \(x\) 的各个数位之和。 给定一个正整数 \(a\),请您找到 \(l,r\) 满足 \(\sum\limits_{i=l}^r f(i)\equiv0\pmod{a}\)。 \(1\leq l,r\leq 10^{200}\),\( 阅读全文
posted @ 2021-03-15 20:49 Jayun 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 在一棵 \(n\) 个节点的树上随机选两个点(可以选同一个),求两点路径长度和是 \(3\) 的倍数的期望个数。 正文: 点分治经典题。在板子的基础上,求两点之间路径长度时可以不断模三,那么对答案的统计时,\(ans=2t_1\cdot t_2+{t_0}^2\),其中 \ 阅读全文
posted @ 2021-03-11 21:07 Jayun 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 两个正整数 \(b\) 和 \(c\) 的和为 \(s\),它们的按位异或和为 \(x\)。请计算出所有可能的有序数对 \((b,c)\) 的个数。 \(2\leq x,s\leq10^{12}\)。 正文: 因为 \(b+c=2(b\land c)+(b\oplu 阅读全文
posted @ 2021-03-11 16:06 Jayun 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 给定 \(n\) 个数的序列 \(a\)。\(m\) 次操作,操作有两种: 求 \(\sum\limits_{i=l}^{r}a_i\)。 把 \(a_l\sim a_r\) 异或上 \(x\)。 \(1\le n\le 10^5\),\(1\le m\le 5\times 阅读全文
posted @ 2021-03-10 17:04 Jayun 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 给定一棵 \(n\) 个点的带权树,结点下标从 \(1\) 开始到 \(n\)。寻找树中找两个结点,求最长的异或路径。 正文: 01Trie 板子题。将每个点到根节点的异或和预处理出来,从高位到低位丢到 01Trie 里,查询时反着搜索,因为要使得异或值最大,当前位要尽量取 阅读全文
posted @ 2021-03-06 10:01 Jayun 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 求: \(\text{Concatenate}(n) \bmod \ m\) 其中 \(\text{Concatenate}(n)\) 表示将 \(1 \sim n\) 所有正整数顺序连接在一起得到的数。 正文: 可以把题目转化为递推的形式: $$\beginf(1)&=1 阅读全文
posted @ 2021-02-27 19:54 Jayun 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 有 \(n\) 个物品,第 \(i\) 个物品有一个权值和一个序号。你需要在这之中选若干个物品,使得其中任意一个物品序号不会被其他数表示。求出一个权值最大的可行方案。 正文: 可以贪心权值从大到小选择当前物品是否可行。 如何证明这个的正确性呢?假设有三个物品 \(i 阅读全文
posted @ 2021-02-26 21:30 Jayun 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 给定一个数组 \(a\),找到一个两两互质的数组 \(b\) 使得 \(\sum\limits_{i=1}^{n}|a_i-b_i|\) 最小。 正文: 我们可以从 \(a_i\leq 30\) 想到这道题可能与状压沾边。设 \(f_{i,J}\) 表示前 \(i\ 阅读全文
posted @ 2021-02-26 20:23 Jayun 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 一条数轴上有 \(n\) 个动点,每个动点的初始坐标是 \(x_i\),它们每秒会向右移 \(v_i\)。求出所有点对最短距离之和。 正文: 假设我们当前正在处理点对 \((i,j)\)。如果 \(v_i<v_j\): 那么它们的距离会越来越远,所以初始距离则是最短 阅读全文
posted @ 2021-02-26 08:52 Jayun 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 可以对一个长度 \(n\) 的 01 串的 \(m\) 组特定位置异或 \(1\),你可以选其中任意几个操作,求能异或出多少个数。 正文: 我们可以换种想法:每次操作相当于把一个 01 串和原串进行异或,求出能异或多少个数。 然后我们知道,在一个数 \(x\) 插入 阅读全文
posted @ 2021-02-24 19:38 Jayun 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 点分治: 引出: 给定一个 \(n(n\leq 10^4)\) 个节点的树,树枝有边权,求距离不超过 \(k\) 的点的对数。 求解: 直接 \(\mathcal{O}(n^2)\) 行不通,我们要想一个更快的方法。 考虑用点分治。我们先把任意一点作为根节点 \(rt\) 分出若干子树。如图,绿点就 阅读全文
posted @ 2021-02-23 12:37 Jayun 阅读(66) 评论(1) 推荐(0) 编辑
摘要: 链接: 洛谷 博客园 题目大意: 有一段代码: sorted = false while (not sorted): sorted = true moo for i = 0 to N-2: if A[i+1] < A[i]: swap A[i], A[i+1] for i = N-2 downto 阅读全文
posted @ 2021-02-20 12:25 Jayun 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 给定一个含有 \(n\) 个数的序列 \(a_1,a_2, \dots, a_n\),需要支持两种操作: Q l r k 表示查询下标在区间 \([l,r]\) 中的第 \(k\) 小的数。 C x y 表示将 \(a_x\) 改为 \(y\)。 正文: 和静态区间第 \( 阅读全文
posted @ 2021-02-20 09:25 Jayun 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 维护一个序列,支持移动元素,查询某元素位置,查询某位置元素。 正文: 考虑用 fhq-Treap。 主要解决 fhq-Treap 不能通过编号找节点的问题。假设我们要求下图红点的位置: 可以每次往父亲节点跳,如果它右孩子则编号就要加上左孩子大小加一,这个一实际上是父亲的零头 阅读全文
posted @ 2021-02-18 21:38 Jayun 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 链接: 题目 博客园 题目大意: 求出: \(\sum_{i=1}^{n}i^k\bmod(10^9+7)\) 正文: 这是一个 \(k+1\) 次的多项式,那么我们如果知道 \(k+2\) 个点就可以确定这个多项式。设 \((x_i,y_i)\) 表示第 \(i\) 个点的坐标,在本题,\(x_i 阅读全文
posted @ 2021-02-18 11:56 Jayun 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 链接: 洛谷 题目大意: 一个半连通图 \(G=(V,E)\) 中 \(\forall u,v\in V\) 满足 \(u\rightarrow v\) 或 \(v\rightarrow u\)。 给定一个图,求出它最大半连通子图及其个数。 正文: 用 Tarjan 对强连通分量缩点,问题就转化成了 阅读全文
posted @ 2021-02-17 20:09 Jayun 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定字符串 \(S\),求有多少对不相交的回文串。 对于 \(100\%\) 的数据,\(1 \leq |S| \leq 10 ^ 5\)。 正文: 设 \(pre_i,suf_i\) 分别表示以 \(i\) 为开头的回文串的个数和以 \(i\) 为结尾的回文串的个数,那么答案就是: \ 阅读全文
posted @ 2021-02-15 17:13 Jayun 阅读(153) 评论(0) 推荐(0) 编辑
摘要: AC 自动机: 介绍: 用 Trie 维护模式串的前缀。 自动机快速的原因就在于失配指针 \(\mathrm{fail}_i\),它指向 \(i\) 的最长后缀。 对于构建 \(\mathrm{fail}_i\),找到其父节点 \(\mathrm{fa}\),一直跳 \(\mathrm{fail}\ 阅读全文
posted @ 2021-02-15 10:16 Jayun 阅读(105) 评论(0) 推荐(1) 编辑