摘要:
原题链接 题意:给一个数字,要求构造一个数字,只通过删除某些位的数,得到的是能整除 \(8\) 的数字。 题解: 代码: #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 2e5 + 1 阅读全文
摘要:
原题链接 题目:给了数字位数和数字位数之和,要构造出最大的数字和最小的数字。 题解:就是想着让 \(9\) 往后并且让 \(1\) 往前,然后中间用 \(0\),注意无效的时候是 \(s = 0\) 并且 \(m \neq 1\) 代码: #include <iostream> #include < 阅读全文
摘要:
原题链接 题意:求字符串中是否存在一个 \(AB\) 和 \(BA\),他们不重叠。 题解:直接把 \(BAB\) 和 \(ABA\) 记录数量的同时,转化为别的字符,然后统计 \(AB\) 和 \(BA\) 然后判断答案。 代码: #include <iostream> #include <cst 阅读全文
摘要:
原题链接 题意:有 \(k\) 叉树,边权是从 \(1\) 到 \(k\),要求边权和为 \(n\),至少有一条边的边权大于 \(d\) 的路径总数量。 题解:因为边权连续,所以 \(f_i = \sum_{j = n-k}^{j < i} f_j\) 就是所有情况的路径数量,然后还有就是,\(g_ 阅读全文
摘要:
题意:要求就是有 \(n <= 7e5\) 长度的序列,然后要求给 \(n\) 个操作,每次删除一个数,删除的是在当前序列中,讲前 \(po_i\) 个数移到后面后的序列中最前面的数。 题解:权值线段树求第 \(k\) 大,然后这个 \(k\) 是根据删除的位置,一次一次找到规律推出来。 代码: # 阅读全文
摘要:
原题链接 题意:很多链,然后让每条链中各个元素都要挨在一起,然后给他们每个元素分配层数,层数相同的要以元素大小从左往右。 题解:就是两个栈模拟一下贪心即可。 代码: #include <algorithm> #include <cstring> #include <cstdio> #include 阅读全文
摘要:
原题链接 题意:静态区间询问比 \(k\) 大的数、小的数。 题解:主席树,但是问题是离散化的时候要注意,那个 \(k\) 也得加入离散化。 代码: #include <iostream> #include <algorithm> #include <vector> #include <cstdio 阅读全文
摘要:
原题链接 题意:一棵树,每个点上有点权,然后求简单路径上第 \(k\) 小。 题解:用的朴素做法,看到静态第 \(k\) 小,就用了主席树,然后在图上操作,要感性理解一下,用 \(lca\),即用 \(u,v\) 的版本然后剪掉双倍 \(lca\) 注意因为 \(lca\) 本身是包括的所以不要剪两 阅读全文
摘要:
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; const int N = 2e5 * 20; int a[N], b[N], root[N]; struct President_Tree 阅读全文
摘要:
原题链接 题意:就是给了一棵树,然后求任意两个点之间的距离异或和最大值是多少。 题解:很显然的是,随便定义数根,然后就是发现,如果计算 \(u\) 和 \(v\) 的边权异或和,那么就是可以是计算出 \(u->root\) 和 \(v->root\),因为如果重叠的话,\(lca->root \op 阅读全文