02 2020 档案
摘要:最长上升子序列问题: https://www.cnblogs.com/sxq-study/p/12303589.html 一:两遍LIS问题 1:题目: 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。 而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏
阅读全文
摘要:题目: 给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 输出格式
阅读全文
摘要:由数字三角形问题演变而来下面的题: https://www.cnblogs.com/sxq-study/p/12303589.html 一:规定位移方向 题目: Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道
阅读全文
摘要:题目:https://leetcode-cn.com/problems/is-subsequence/ 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=10
阅读全文
摘要:https://www.acwing.com/solution/acwing/content/845/
阅读全文
摘要:题目: 在一条数轴上有 NN 家商店,它们的坐标分别为 A1A1~ANAN。 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。 为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。 输入格式 第一行输入整数N。 第二行N个整数A1A1~ANAN。 输出格式
阅读全文
摘要:题目: 有 nn 个人排队到 1 个水龙头处打水,第 ii 个人装满水桶所需的时间是 titi,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小? 输入格式 第一行包含整数 nn。 第二行包含 nn 个整数,其中第 ii 个整数表示第 ii 个人装满水桶所花费的时间 titi。 输出格式 输
阅读全文
摘要:一:哈夫曼问题 题目: 在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。 达达决定把所有的果子合成一堆。 每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。 可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。 达达在合并果子时总共消耗
阅读全文
摘要:一:区间选点 题目: 给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数N,表示区间数。 接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。 输出
阅读全文
摘要:记忆化搜索:https://oi-wiki.org/dp/memo/ 一:滑雪 给定一个R行C列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。 当然,一个
阅读全文
摘要:一:没有上司的舞会 Ural大学有N名职员,编号为1~N。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N1≤i≤N。 现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。 在满足这个条件的前提下,主办方希
阅读全文
摘要:一:蒙德里安的梦想 求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案。 例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行,包含两个整数N和M。 当输入用例N=0,M=0时,表示输入终止,且该用例无需
阅读全文
摘要:数位dp:https://blog.csdn.net/wust_zzwh/article/details/52100392 题目: 给定两个整数 a 和 b,求 a 和 b 之间的所有数字中0~9的出现次数。 例如,a=1024,b=1032,则 a 和 b 之间共有9个数如下: 1024 1025
阅读全文
摘要:一个正整数nn可以表示成若干个正整数之和,形如:n=n1+n2+…+nkn=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1n1≥n2≥…≥nk,k≥1。 我们将这样的一种表示称为正整数n的一种划分。 现在给定一个正整数n,请你求出n共有多少种不同的划分方法。 输入格式 共一行,包含一个整数n
阅读全文
摘要:区间dp: 设有N堆石子排成一排,其编号为1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。 例如有4
阅读全文
摘要:一:数字三角形 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输入格式 第一行包含整数n,表示数字三角形的层数。 接下来n
阅读全文
摘要:一:01背包 有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。 第 ii 件物品的体积是 vivi,价值是 wiwi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 输入格式 第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背
阅读全文
摘要:题目一: 给定nn堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。 问如果两人都采用最优策略,先手是否必胜。 输入格式 第一行包含整数nn。 第二行包含nn个数字,其中第 ii 个数字表示第 ii 堆石子的数量。 输出格
阅读全文
摘要:容斥原理: 假如又4个集合,分别为A, B, C,求这三个集合的并集: S(a) :表示A集合中元素的个数 S = S(a) + S(b) + S(c)(项的个数是奇数) - S(a 交 b)- S(a 交 c) - S(b 交 c)(偶数) + S(a 交 b 交 c)(奇数) 故可知奇数加偶数减
阅读全文
摘要:卡特兰数:https://oi-wiki.org/math/catalan/ 1 #include <iostream> 2 using namespace std; 3 4 const int mod = 1e9+7; 5 6 long long qmi(long long a, long lon
阅读全文
摘要:组合数一: 组合数范围小,询问多,可以采用预处理方式,把所有的都处理出来 题目: 给定nn组询问,每组询问给定两个整数a,ba,b,请你输出Cba mod (109+7)Cab mod (109+7)的值。 输入格式 第一行包含整数nn。 接下来nn行,每行包含一组aa和bb。 输出格式 共nn行,
阅读全文
摘要:一.高斯消元解线性方程组 题目:输入一个增广矩阵,输出所有的解 分析:如果出现 0 = x(>0) 无解, 0 = 0 无穷多解, 完美梯形就是唯一解 代码: 1 #include <iostream> 2 #include <algorithm> 3 #include <cmath> 4 5 us
阅读全文
摘要:求第n个丑数: 性质:1是丑数,如果一个数x是丑数,那么2x, 3x, 5x都是丑数,需要注意的是一个丑数可能由多种方式生成 1 typedef long long ll; 2 class Solution { 3 public: 4 int nthUglyNumber(int n) { 5 vec
阅读全文
摘要:裴蜀定理: 对于任意的正整数a, b一定存在非零x,y使得:ax + by = gcd(a, b)(a和b的最大公约数)。 性质:ax + by 的最小值就是 gcd(a,b) 扩展欧几里得算法: 求出系数x,y 1 #include <iostream> 2 #include <algorithm
阅读全文
摘要:求逆元: (m / q ) % x ,这里因为m / q 不一定为整数,所以构造一个新的式子: (m / q) % x = m * y % x, 这里的y就是要求的逆元 费马小定理加快速幂求逆元: 求法:原式变形为: 1 / q = y (%x)-> 1 = y * q(%x) -> 由于x是质数,
阅读全文
摘要:快速幂:求 a^b % p 1 #include <iostream> 2 using namespace std; 3 4 typedef long long LL; 5 6 LL qmi(LL a, LL b, LL p){ 7 LL res = 1 % p; 8 while(b){ 9 if(
阅读全文
摘要:欧拉函数: 时间复杂度:sqrt(n) 代码: 1 #include <iostream> 2 using namespace std; 3 4 int main(){ 5 int n;cin >> n; 6 while(n --){ 7 int a;cin >> a; 8 int res = a;
阅读全文
摘要:一.试除法求约数: 1 vector<int> get_divisorts(int t){ 2 vector<int> a; 3 for(int i = 1;i <= t/i;++i){ 4 if(t % i == 0){ 5 a.push_back(i); 6 if(i != t/i) a.pus
阅读全文
摘要:一.判断质数 思路:任何一个正整数,他的因数一定是成对出现的,如果一个数 x 有除了1和他本身以外的的其他因数,那么一定是一个因数大于根号x, 另一个小于根号x,所以我们可以根据这个性质,来用试除法进行判断是不是质数。 时间复杂度:O(sqrt(n)) 代码: 1 bool is_prime(int
阅读全文