![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础课
文章平均质量分 77
昂昂累世士
这个作者很懒,什么都没留下…
展开
-
AcWing 3302 表达式求值
题目描述:给定一个表达式,其中运算符仅包含+,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。 题目保证符号-只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2)之类表达式均不会出现。 题目保证表达式中所有数字均为正整数。 题目保证表达式在中间计算过程以及结果中,均不超过2^31−1。 题目中的整除是指向0取整,也就是说对于大于0的结果向下取整,例如 5/3=1,对于小于0的结果向上...原创 2021-05-25 17:18:56 · 243 阅读 · 0 评论 -
AcWing 2816 判断子序列
题目描述:给定一个长度为n的整数序列a1,a2,…,an以及一个长度为m的整数序列 b1,b2,…,bm。请你判断a序列是否为b序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列{a1,a3,a5}是序列{a1,a2,a3,a4,a5}的一个子序列。输入格式第一行包含两个整数n,m。第二行包含n个整数,表示 a1,a2,…,an。第三行包含m个整数,表示 b1,b2,…,bm。输出格式如果a序列是b序列的子序列,...原创 2021-05-23 22:59:17 · 291 阅读 · 0 评论 -
AcWing 104 货仓选址
题目描述:在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1~AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000输入样例:46 2 9 ...原创 2019-02-17 11:37:19 · 398 阅读 · 2 评论 -
AcWing 913 排队打水
题目描述:有 n 个人排队到 1 个水龙头处打水,第 i 个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?输入格式第一行包含整数 n。第二行包含 n个整数,其中第 i 个整数表示第 i 个人装满水桶所花费的时间 ti。输出格式输出一个整数,表示最小的等待时间之和。数据范围1≤n≤10^5,1≤ti≤10^4输入样例:...原创 2020-01-16 16:22:35 · 564 阅读 · 0 评论 -
AcWing 148 合并果子
题目描述:在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体...原创 2020-01-16 13:40:37 · 282 阅读 · 0 评论 -
AcWing 907 区间覆盖
题目描述:给定N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,...原创 2020-01-16 13:00:04 · 166 阅读 · 0 评论 -
AcWing 906 区间分组
题目描述:给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1≤N≤10^5,−10^9≤ai≤bi≤10^9输入样例:3...原创 2020-01-16 12:05:42 · 713 阅读 · 1 评论 -
AcWing 908 最大不相交区间数量
题目描述:给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤10^5,−10^9≤ai≤bi≤10^9输入样例:3...原创 2020-01-15 21:37:47 · 355 阅读 · 0 评论 -
AcWing 905 区间选点
题目描述:给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤10^5,−10^9≤ai≤bi≤10...原创 2020-01-15 21:16:07 · 298 阅读 · 0 评论 -
AcWing 901 滑雪
题目描述:给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 ...原创 2020-01-15 20:05:31 · 407 阅读 · 0 评论 -
AcWing 285 没有上司的舞会
题目描述:Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数N。接下...原创 2020-01-15 19:14:16 · 226 阅读 · 0 评论 -
AcWing 91 最短Hamilton路径
题目描述:给定一张 n个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y...原创 2020-01-15 18:27:07 · 285 阅读 · 0 评论 -
AcWing 291 蒙德里安的梦想
题目描述:求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数N和M。当输入用例N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M...原创 2020-01-15 12:44:17 · 653 阅读 · 0 评论 -
AcWing 338 计数问题
题目描述:给定两个整数 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次等等…输入格式输入包含多组测试数据。每组测试数据占一行,包...原创 2020-01-14 22:16:39 · 389 阅读 · 2 评论 -
AcWing 900 整数划分
题目描述:一个正整数n可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数n的一种划分。现在给定一个正整数n,请你求出n共有多少种不同的划分方法。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示总划分数量。由于答案可能很大,输出结果请对10^9+7取模。数据范围1≤...原创 2020-01-14 18:12:04 · 407 阅读 · 0 评论 -
AcWing 282 石子合并
题目描述:设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 ...原创 2020-01-14 16:59:44 · 414 阅读 · 0 评论 -
AcWing 899 编辑距离
题目描述:给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。输入格式第一行包含两个整数n和m。接下来n行,每行包含一个字符串,表示给定的字符串。再接下来m行,每行包含一个字符...原创 2020-01-14 16:10:54 · 189 阅读 · 0 评论 -
AcWing 902 最短编辑距离
题目描述:给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有:删除–将字符串A中的某个字符删除。 插入–在字符串A的某个位置插入某个字符。 替换–将字符串A中的某个字符替换为另一个字符。现在请你求出,将A变为B至少需要进行多少次操作。输入格式第一行包含整数n,表示字符串A的长度。第二行包含一个长度为n的字符串A。第三行包含整数m,表示字符串B的长度。...原创 2020-01-14 15:49:15 · 302 阅读 · 0 评论 -
AcWing 897 最长公共子序列
题目描述:给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,输入样例:4 5acbdabe...原创 2020-01-14 12:04:30 · 285 阅读 · 0 评论 -
AcWing 896 最长上升子序列 II
题目描述:给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000,−10^9≤数列中的数≤10^9输入样例:73 1 2 1 8 5 6输出样例:4分析:LIS问题用一般动态规划的思想求解复杂度是平方...原创 2020-01-12 19:19:38 · 477 阅读 · 0 评论 -
AcWing 895 最长上升子序列
题目描述:给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−10^9≤数列中的数≤10^9输入样例:73 1 2 1 8 5 6输出样例:4分析:设用数组a[n]存储该数列,很容易想到用f[i]表...原创 2020-01-07 19:50:08 · 170 阅读 · 0 评论 -
AcWing 898 数字三角形
题目描述:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 5输入格式第一行包含整数n,表示数字三角形的层数。接下来n行,每行包...原创 2020-01-07 17:22:56 · 307 阅读 · 0 评论 -
AcWing 9 分组背包问题
题目描述:有 N 组物品和一个容量是 V的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vij,价值是 wij,其中 i 是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品组数和背包容量。接下来有 N组数据:每组数据第一行有一个整数 ...原创 2020-01-06 20:17:06 · 174 阅读 · 0 评论 -
AcWing 5 多重背包问题 II
题目描述:有 N 种物品和一个容量是 V的背包。第 i种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i种物品的体积、价值和数量。输出格...原创 2020-01-06 19:48:30 · 198 阅读 · 0 评论 -
AcWing 4 多重背包问题 I
题目描述:有 N 种物品和一个容量是 V的背包。第 i种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i种物品的体积、价值和数量。输出格...原创 2020-01-06 19:11:27 · 157 阅读 · 0 评论 -
AcWing 3 完全背包问题
题目描述:有 N 种物品和一个容量是 V的背包,每种物品都有无限件可用。第 i种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i种物品的体积和价值。输出格式...原创 2020-01-05 17:34:03 · 202 阅读 · 0 评论 -
AcWing 2 01背包问题
题目描述:有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i件物品的体积和价值。输出格式输...原创 2020-01-04 23:52:34 · 261 阅读 · 0 评论 -
AcWing 894 拆分-Nim游戏
题目描述:给定n堆石子,两位玩家轮流操作,每次操作可以取走其中的一堆石子,然后放入两堆规模更小的石子(新堆规模可以为0,且两个新堆的石子总数可以大于取走的那堆石子数),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个整数,其中第i个整数表示第i堆石子的数量ai。输出格式如果先手方必胜,则输出“Yes”。否则,输出...原创 2020-01-04 12:36:41 · 410 阅读 · 3 评论 -
AcWing 893 集合-Nim游戏
题目描述:给定n堆石子以及一个由k个不同正整数构成的数字集合S。现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合S,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数k,表示数字集合S中数字的个数。第二行包含k个整数,其中第i个整数表示数字集合S中的第i个数si。第三行包含整数n。第四行...原创 2020-01-04 12:01:40 · 519 阅读 · 0 评论 -
AcWing 892 台阶-Nim游戏
题目描述:现在,有一个n级台阶的楼梯,每级台阶上都有若干个石子,其中第i级台阶上有ai个石子(i≥1)。两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中(不能不拿)。已经拿到地面上的石子不能再拿,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个整数,其中第i个整数表示第i级台阶上的石子数...原创 2020-01-03 19:03:26 · 198 阅读 · 0 评论 -
AcWing 891 Nim游戏
题目描述:给定n堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个数字,其中第 i 个数字表示第 i堆石子的数量。输出格式如果先手方必胜,则输出“Yes”。否则,输出“No”。数据范围1≤n≤10^5,1≤每堆石子...原创 2020-01-03 17:59:31 · 268 阅读 · 0 评论 -
AcWing 890 能被整除的数
题目描述:给定一个整数n和m个不同的质数p1,p2,…,pm。请你求出1~n中能被p1,p2,…,pm中的至少一个数整除的整数有多少个。输入格式第一行包含整数n和m。第二行包含m个质数。输出格式输出一个整数,表示满足条件的整数的个数。数据范围1≤m≤16,1≤n,pi≤10^9输入样例:10 22 3输出样例:7分析:本题考察容斥...原创 2020-01-03 16:38:59 · 440 阅读 · 0 评论 -
AcWing 889 满足条件的01序列
题目描述:给定n个0和n个1,它们将按照某种顺序排成长度为2n的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中0的个数都不少于1的个数的序列有多少个。输出的答案对10^9+7取模。输出格式共一行,包含整数n。输出格式共一行,包含一个整数,表示答案。数据范围1≤n≤10^5输入样例:3输出样例:5分析:将题目的1看作进栈,0看作出...原创 2020-01-03 11:46:21 · 398 阅读 · 0 评论 -
AcWing 888 求组合数 IV
题目描述:输入a,b,求C(a,b)的值。注意结果可能很大,需要使用高精度计算。输入格式共一行,包含两个整数a和b。输出格式共一行,输出C(a,b)的值。数据范围1≤b≤a≤5000输入样例:5 3输出样例:10分析:本题要求组合数的实际值,不能对结果取模,所以要使用高精度。C(a,b) = a! / (b! * (a - b)!)。为了...原创 2020-01-03 10:30:39 · 262 阅读 · 0 评论 -
AcWing 887 求组合数 III
题目描述:给定n组询问,每组询问给定三个整数a,b,p,其中p是质数,请你输出C(a,b) modp的值。输入格式第一行包含整数n。接下来n行,每行包含一组a,b,p。输出格式共n行,每行输出一个询问的解。数据范围1≤n≤20,1≤b≤a≤10^18,1≤p≤10^5,输入样例:35 3 73 1 56 4 13输出样例:332分...原创 2020-01-01 23:18:50 · 291 阅读 · 0 评论 -
AcWing 886 求组合数 II
题目描述:给定n组询问,每组询问给定两个整数a,b,请你输出C(a,b) mod(10^9+7)的值。输入格式第一行包含整数n。接下来n行,每行包含一组a和b。输出格式共n行,每行输出一个询问的解。数据范围1≤n≤100000,1≤b≤a≤10^5输入样例:33 15 32 2输出样例:3101分析:本题的a和b最多高达十万级...原创 2020-01-01 21:02:10 · 438 阅读 · 0 评论 -
AcWing 885 求组合数 I
题目描述:给定n组询问,每组询问给定两个整数a,b,请你输出C(a,b)mod(10^9+7)的值。输入格式第一行包含整数n。接下来n行,每行包含一组a和b。输出格式共n行,每行输出一个询问的解。数据范围1≤n≤10000,1≤b≤a≤2000输入样例:33 15 32 2输出样例:3101分析:本题b和a的范围均不超过2...原创 2020-01-01 20:09:45 · 398 阅读 · 0 评论 -
AcWing 884 高斯消元解异或线性方程组
题目描述:输入一个包含n个方程n个未知数的异或线性方程组。方程组中的系数和常数为0或1,每个未知数的取值也为0或1。求解这个方程组。异或线性方程组示例如下:M[1][1]x[1] ^ M[1][2]x[2] ^ … ^ M[1][n]x[n] = B[1]M[2][1]x[1] ^ M[2][2]x[2] ^ … ^ M[2][n]x[n] = B[2]…M[n][1]x[...原创 2020-01-01 19:42:06 · 545 阅读 · 0 评论 -
AcWing 883 高斯消元解线性方程组
题目描述:输入一个包含n个方程n个未知数的线性方程组。方程组中的系数为实数。求解这个方程组。下图为一个包含m个方程n个未知数的线性方程组示例:输入格式第一行包含整数n。接下来n行,每行包含n+1个实数,表示一个方程的n个系数以及等号右侧的常数。输出格式如果给定线性方程组存在唯一解,则输出共n行,其中第i行输出第i个未知数的解,结果保留两位小数。如果给定线性方程组...原创 2019-12-29 17:27:51 · 177 阅读 · 0 评论 -
AcWing 204 表达整数的奇怪方式
题目描述:给定2n个整数a1,a2,…,an和m1,m2,…,mn,求一个最小的非负整数x,满足∀i∈[1,n],x≡mi(modai)。输入格式第1行包含整数n。第2..n行:每i+1行包含两个整数ai和mi,数之间用空格隔开。输出格式输出最小非负整数x,如果x不存在,则输出-1。如果存在x,则数据保证x一定在64位整数范围内。数据范围1≤ai≤2^31−1,0≤m...原创 2019-12-28 21:45:44 · 324 阅读 · 0 评论