算法
ai_XZP_master
本人计算机专业,主要研究人工智能、计算机视觉、物体检测。
展开
-
每日四题打卡-4.22:区间DP-石子合并/线性DP数字三角形/背包问题
区间DP-石子合并设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, ...原创 2020-04-22 12:04:15 · 234 阅读 · 0 评论 -
每日四题打卡-4.20:记忆化搜索-滑雪/状态压缩DP-蒙德里安的梦想/数位统计DP-计数问题/计数类DP-整数划分
记忆化搜索-滑雪给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 ...原创 2020-04-20 12:18:16 · 397 阅读 · 0 评论 -
每日四题打卡-4.17:线性DP-编辑距离/线性DP-最短编辑距离/线性DP-最长公共子序列/线性DP-最长上升子序列
线性DP-编辑距离给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。输入格式第一行包含两个整数n和m。接下来n行,每行包含一个字符串,表示给定的字符串。再接下来m行,每行包含...原创 2020-04-17 14:42:04 · 275 阅读 · 0 评论 -
每日四题打卡-4.16:贪心-区间覆盖/贪心-区间分组/贪心-最大不相交区间数量/贪心-区间选点
贪心-区间覆盖给定N个闭区间[ai,biai,bi]以及一个线段区间[s,ts,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,...原创 2020-04-16 14:36:33 · 316 阅读 · 0 评论 -
每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子
耍杂技的牛具体:https://blog.csdn.net/qq_27262727/article/details/105515507农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。...原创 2020-04-15 11:57:27 · 375 阅读 · 0 评论 -
贪心推公式-耍杂技的牛
农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这N头奶牛中的每一头都有着自己的重量WiWi以及自己的强壮程度SiSi。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)...原创 2020-04-14 17:01:51 · 375 阅读 · 0 评论 -
贪心绝对值不等式-货仓选址
在一条数轴上有NN家商店,它们的坐标分别为A1A1~ANAN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。思路:时间复杂度(O(nlog(n))输入格式第一行输入整数N。第二行N个整数A1A1~ANAN。输出格式输出一个整数,表示距离之和的最小值。...原创 2020-04-14 16:45:10 · 207 阅读 · 0 评论 -
贪心排序不等式-排队打水
有n个人排队到 1 个水龙头处打水,第i个人装满水桶所需的时间是ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?原创 2020-04-14 12:20:54 · 692 阅读 · 0 评论 -
huffman哈夫曼树-合并果子
在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假...原创 2020-04-13 11:03:19 · 643 阅读 · 0 评论 -
贪心-区间覆盖
给定N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。思路:分析:令需要覆盖的区间开头为st,结尾为ed1.将所有的区间按左端点排序2.找到能覆盖st的区间中右端点最大的那一个,从前往后枚举每个区间,在所有能覆盖start的区间中,选择右端点最大的区间,然后将start更新成右端点的最...原创 2020-04-13 10:35:56 · 301 阅读 · 0 评论 -
贪心-区间分组
给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。思路:这个区间贪心问题,是要按照区间左端点排序。分情况讨论贪心决策:1.如果一个区间的左端点比当前每一个组的最右端点都要小,那么意味着要开一个新区间了,这个条件还可以优化成,一个区间左端点比最小组的右端点都要小就开一个新组。2.如果一个区间的左...原创 2020-04-13 09:42:59 · 456 阅读 · 1 评论 -
贪心-最大不相交区间数量
给定N个闭区间[ai,biai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。思路:做法跟区间选点操作是一样的。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤1051≤N≤105,...原创 2020-04-12 14:52:59 · 301 阅读 · 0 评论 -
贪心-区间选点
给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。思路:当一个数上有点时,包含这个数的区间都会被满足。因此,我们在推理时,应尽可能“一箭多雕”。接着,我们的目标就转化为“如何尽可能完美地放点”。一个区间,若放较前,则无法顾及后面;若放较后,则无法顾及前面。既然如此,我们就应该...原创 2020-04-12 14:40:57 · 329 阅读 · 0 评论 -
线性DP-编辑距离
问题:给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。思路:这题就是上一个求几遍最短编辑距离就行了。时间复杂度:1e6 * 10^2 = 1e8,时限两秒,是ok的输入格式第一行包含两...原创 2020-04-10 12:09:43 · 173 阅读 · 0 评论 -
线性DP-最短编辑距离
给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有:删除–将字符串A中的某个字符删除。 插入–在字符串A的某个位置插入某个字符。 替换–将字符串A中的某个字符替换为另一个字符。现在请你求出,将A变为B至少需要进行多少次操作。分析:1)删除操作:把a[i]删掉之后a[1~i]和b[1~j]匹配 所以之前要先做到a[1~(i-1)]和b[1...原创 2020-04-10 12:03:01 · 230 阅读 · 0 评论 -
线性DP-最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。思路:输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤1000,输入样例:4 5...原创 2020-04-10 11:26:49 · 148 阅读 · 0 评论 -
线性DP-最长上升子序列
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。思路:如下图所示数值严格单调递增的子序列最长长度是4.输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数≤109输入样例:73 1 2 1...原创 2020-04-10 11:08:09 · 120 阅读 · 0 评论 -
记忆话搜索-滑雪
给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 615 24 25 2...原创 2020-04-10 10:46:58 · 105 阅读 · 0 评论 -
状态压缩DP-蒙德里安的梦想
求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:思路:1、所谓的状态压缩DP,就是用二进制数保存状态。为什么不直接用数组记录呢?因为用一个二进制数记录方便作位运算。前面做过的八皇后,八数码,也用到了状态压缩。2. 本题等价于找到所有横放 1 X 2 小方格的方案数,因为所有横放...原创 2020-04-09 12:56:52 · 185 阅读 · 0 评论 -
数位统计DP-计数问题
给定两个整数 a 和 b,求 a 和 b 之间的所有数字中0~9的出现次数。例如,a=1024,b=1032,则 a 和 b 之间共有9个数如下:1024 1025 1026 1027 1028 1029 1030 1031 1032 其中‘0’出现10次,‘1’出现10次,‘2’出现7次,‘3’出现3次等等…思路:暴力做法:出现几个1就统计几次,时间复杂度是10^8*8优化做...原创 2020-04-09 12:03:49 · 274 阅读 · 0 评论 -
计数类DP-整数划分
一个正整数nn可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数n的一种划分。现在给定一个正整数n,请你求出n共有多少种不同的划分方法。比如:5,有七种表示方式n中的数可以使用无限次,所以可以把它看成完全背包问题。先回顾一下完全背包具体做法:总结:f[i][j]求法如下仔细看可以发现,f[i][j]后...原创 2020-04-08 11:56:54 · 278 阅读 · 0 评论 -
区间DP-石子合并
设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得...原创 2020-04-08 10:55:56 · 342 阅读 · 0 评论 -
线性DP-数字三角形
问题:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 5思路:每一次只能走一个格子,有很多条路可以走。找到一条路径上所有数字之和最大的。...原创 2020-04-08 10:20:37 · 198 阅读 · 0 评论 -
多重背包问题
有NN种物品和一个容量是VV的背包。第ii种物品最多有sisi件,每件体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行三个整数vi,wi,sivi,wi,si,用空格隔开,分别表示...原创 2020-04-07 17:21:31 · 178 阅读 · 0 评论 -
完全背包问题
完全背包跟背包问题只有一个区别:每种物品都有无限件可用。有N种物品和一个容量是V的背包,每种物品都有无限件可用。第i种物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。分析状态表示是一样的状态计算不一样了,f(i, j)分为选和不选两种问题,但是这一次可以无限用。需要划分无数个子集。先考虑朴素怎么做,...原创 2020-04-06 15:13:16 · 106 阅读 · 0 评论 -
背包问题
问题:有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有NN行,每行两个整数vi,wivi,wi,用空格隔开,分别表示第ii件物品的体积和价值。...原创 2020-04-06 13:01:07 · 225 阅读 · 0 评论 -
C++笔试题模版汇总(一)
1、快速排序//1、确定分界点x:q[l] or q[r] or q[(l+r)] //2、取中间数,也可以取随机数。调整区间范围:左端所有数<=x,右端所有数>=x//3、递归排序left,递归排序right)void quick_sort(int q[], int l, int r){ if (l >= r) return;...原创 2020-03-07 17:39:17 · 424 阅读 · 0 评论 -
博弈论-集合-Nim游戏
相关概念:Mex运算设S表示一个非负整数集合。定义mex(S)为求出不属于集合S的最小非负整数的运算,即:找到集合当中不存在的最小自然数。mex(S) = min{x}, x属于自然数,且x不属于SSG函数在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1, y2, …, yk,定义SG(x)为x的后继节点y1, y2, …, yk 的SG函数值构成的集合再...原创 2020-03-05 12:09:45 · 465 阅读 · 0 评论 -
博弈论-台阶Nim游戏
问题:现在,有一个nn级台阶的楼梯,每级台阶上都有若干个石子,其中第ii级台阶上有aiai个石子(i≥1i≥1)。两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中(不能不拿)。已经拿到地面上的石子不能再拿,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。根据样例对问题分析:Nim游戏通用原理:给定N堆物品,第i堆物品有Ai...原创 2020-03-05 10:37:52 · 448 阅读 · 0 评论 -
求组合数(三)
卢卡斯定理时间复杂度:推导证明:Example给定nn组询问,每组询问给定三个整数a,b,pa,b,p,其中pp是质数,请你输出CbamodpCabmodp的值。输入格式第一行包含整数nn。接下来nn行,每行包含一组a,b,pa,b,p。输出格式共nn行,每行输出一个询问的解。数据范围1≤n≤201≤n≤20,1≤b≤a≤10181...原创 2020-03-03 12:53:53 · 151 阅读 · 0 评论 -
求组合数(二)
求组合数(一)方法时间复杂度较高,这里使用优化组合数方法:Example给定nn组询问,每组询问给定两个整数a,ba,b,请你输出Cbamod(109+7)Cabmod(109+7)的值。输入格式第一行包含整数nn。接下来nn行,每行包含一组aa和bb。输出格式共nn行,每行输出一个询问的解。数据范围1≤n≤100001≤n≤10000,1≤b≤a...原创 2020-03-03 10:14:23 · 204 阅读 · 0 评论 -
求组合数(一)
求组合数(一)概念:Example给定nn组询问,每组询问给定两个整数a,ba,b,请你输出Cbamod(109+7)Cabmod(109+7)的值。输入格式第一行包含整数nn。接下来nn行,每行包含一组aa和bb。输出格式共nn行,每行输出一个询问的解。数据范围1≤n≤100001≤n≤10000,1≤b≤a≤20001≤b≤a≤2000...原创 2020-03-03 09:38:44 · 273 阅读 · 0 评论 -
高斯消元解异或线性方程组
高斯消元解异或线性方程组举例:假设输入如下:1 1 0 10 1 1 01 0 0 1有步骤跟上一节类似:1、消成上三角矩阵。a)枚举列 b)找非0行 c)将非0行换到第一行 d)把下面所有行清零2、判断解的情况:a)完美-唯一解 b)有矛盾,说明无解 c)无矛盾,无穷解。Example输入一个包含n个方程n个未知数的异或线性方程组。方程组中的系数...原创 2020-03-02 18:00:47 · 541 阅读 · 0 评论 -
高斯消元解线性方程组
高斯消元解线性方程组概念:高斯消元法:将方程组变成上三角形式:出现无解/无穷解/唯一解情况:1、完美阶梯形:唯一解2、 不完美阶梯形:0 = 非零,无解3、不完美阶梯形:0 = 0,无穷多组解具体做法:举例,下图是一个行列式:第一步我们需要枚举每一列:a)找到当前绝对值最大的一行,第二行b)将该行换到最上面去c)将改行第一...原创 2020-03-02 12:19:36 · 2913 阅读 · 0 评论 -
中国剩余定理-表达整数的奇怪方式
表达整数的奇怪方式问题:给定2n个整数a1,a2,…,an和m1,m2,…,mn,求一个最小的非负整数x,满足∀i∈[1,n],x≡mi(modai)∀i∈[1,n],x≡mi(modai)。中国剩余定理:举例:推导:合并方程组:Example给定2n个整数a1,a2,…,ana1,a2,…,an和m1,m2,…,mnm1,m2,…,mn,...原创 2020-03-02 09:50:09 · 349 阅读 · 1 评论 -
扩展欧几里得算法-线性同余方程
扩展欧几里得算法-线性同余方程概念:给定a, b, m,求整数x,使得: ax = b(mod m);举例:2x = 3 (mod 6) 无解 4x = 3 (mod 5) :4*某一个数 同于于4*某一个数/5的余数是3. x可以等于 2,7等。等式变形:ax = b(mod m) 等价于 存在一个整数y属于z,使得 ax = m*y + b -->...原创 2020-03-01 11:18:11 · 360 阅读 · 0 评论 -
扩展欧几里得算法
扩展欧几里得算法(欧几里得算法即辗转相除法)裴蜀定理:有一对正整数a, b,那么一定存在整数x, y,使得 ax + by = (a, b)最大公约数。举例:存在ax + by = d,则d是a和b的最大公约数的倍数。Example给定nn对正整数ai,biai,bi,对于每对数,求出一组xi,yixi,yi,使其满足ai∗xi+bi∗yi=gcd(ai,bi)ai∗xi+bi∗y...原创 2020-03-01 11:01:15 · 207 阅读 · 0 评论 -
快速幂求逆元
快速幂求逆元概念:得到Example给定nn组ai,piai,pi,其中pipi是质数,求aiai模pipi的乘法逆元,若逆元不存在则输出impossible。注意:请返回在0∼p−10∼p−1之间的逆元。乘法逆元的定义若整数b,mb,m互质,并且对于任意的整数aa,如果满足b|ab|a,则存在一个整数xx,使得a/b≡a∗x(modm)a/b≡a∗x(...原创 2020-03-01 10:36:04 · 244 阅读 · 0 评论 -
快速幂
快速幂定义:快速求出来a^k mod p的结果。朴素做法:(时间复杂度很高)优化:拆成若干个数次幂之和。举例:Example给定nn组ai,bi,piai,bi,pi,对于每组数据,求出abiimodpiaibimodpi的值。输入格式第一行包含整数nn。接下来nn行,每行包含三个整数ai,bi,piai,bi,pi。输出格式对于每组...原创 2020-02-29 12:28:38 · 196 阅读 · 0 评论 -
筛法求欧拉函数
筛法求欧拉函数1、如果这个数是质数,1~p-1都是质数2、如果i % primes[j] == 0,说明i是p[j]的质因子则有:3、如果i % primes[j] != 0,pj是(i*pj)的最小质因子,则有:Example给定一个正整数n,求1~n中每个数的欧拉函数之和。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示1~n中每个...原创 2020-02-29 10:25:13 · 195 阅读 · 0 评论