自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 堆:数据备份

题目https://www.acwing.com/problem/content/description/149/题意:有n+1栋楼,每相邻两两配对搭一条电缆,现资源k条电缆,问选哪k对消耗最小。(一栋楼不难同时被两栋或以上的其他楼相连)数据范围2≤n≤100000,1≤k≤n/2,0≤s≤1000000000输入样例:5 2134612输出样例:4思路:这道题目我们...

2020-01-31 21:50:04 147

原创 堆:洛谷1392取数

题目链接:https://www.luogu.com.cn/problem/P1392题意:在一个n行m列的数阵中,你须在每一行取一个数(共n个数),并将它们相加得到一个和。对于给定的数阵,请你输出和前k小的取数方法。输入 #3 3 21 2 36 3 54 1 2输出 #5 6思路:哈哈~显然这个题和acwing上的序列那道堆题一样的嘛。代码实现:#include <...

2020-01-31 21:04:13 247

原创 堆:荷马史诗

题目链接:https://www.acwing.com/problem/content/151/题意:原题比较繁琐,总体意思和合并果子一样,只不过是每次最大合并k个而不是两个。思路:最多合并k个不一定每次都能合并k个,那么我们让最小的几个先不满足k个合并,之后的合并都是k个结合,那么得到的结果回最小。代码实现:#include <iostream>#include <a...

2020-01-31 20:38:04 155

原创 堆:合并果子

题目链接:https://www.acwing.com/problem/content/150/题意:在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的...

2020-01-31 19:53:12 1938 1

原创 堆:序列

题目链接:https://www.acwing.com/problem/content/148/题意:给定m个序列,每个包含n个非负整数。现在我们可以从每个序列中选择一个数字以形成具有m个整数的序列。很明显,我们一共可以得到n^m个这种序列, 然后我们可以计算每个序列中的数字之和,并得到n^m个值。现在请你求出这些序列和之中最小的n个值。数据范围0<m≤1000,0<n≤20...

2020-01-30 23:51:36 910

原创 堆:超市

题目链接:https://www.acwing.com/problem/content/147/题意:超市里有N件商品,每个商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品(即当天di<=0)不能再卖。求合理安排每天卖的商品的情况下,可以得到的最大收益是多少。数据范围0≤N≤10000,1≤pi,di≤10000输入样例:4 50 2 10 1 20 2 ...

2020-01-30 23:15:51 186

原创 洛谷 P3378 【模板】堆

题目链接:https://www.luogu.com.cn/problem/P3378初学选手的堆类模板题,这里就用数组模拟堆操作。代码实现:#include<iostream>using namespace std;const int N = 1e6 + 5;int n, size;int h[N];void down(int u){ int t = ...

2020-01-30 17:12:17 194

原创 运算符

学习编程肯定不能漏了运算符啊,了解不多,但先总结一点,后期不断补充啦。、、、、、、、、、、、、、、、、、、、、、、、、、、、运算法1:"~"含义描述取反将一个数按二进制取反,原本的0变成1,1变成0举例:a=23a=00010111b=11101000其实在循环的时候i >= 0可以写作 ~i可使代码更简短;因为-1取反为0、、、、、、、、、、、、、...

2020-01-29 17:39:10 176

原创 分组背包问题

题目链接:https://www.acwing.com/problem/content/9/题意:有 N 组物品和一个容量是 V 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开...

2020-01-28 22:36:57 194

原创 多重背包Ⅱ

题目链接:https://www.acwing.com/problem/content/5/题意:有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。数据范围0<N≤10000<V≤20000<vi,wi,si≤2000提示:...

2020-01-28 21:57:54 150

原创 多重背包问题Ⅰ

题目链接:https://www.acwing.com/problem/content/4/题意:有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。数据范围0<N,V≤1000<vi,wi,si≤100输入样例4 51 2 32...

2020-01-28 21:09:53 99

原创 完全背包问题

题目链接:https://www.acwing.com/problem/content/3/题意:有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22 ...

2020-01-28 20:45:32 100

原创 01背包问题

题目链接:https://www.acwing.com/problem/content/2/题意:有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22 4...

2020-01-28 19:57:20 208

转载 状压dp:炮兵阵地

题目链接:https://www.acwing.com/problem/content/294/害!状压dp真的好难啊,借鉴一下题解!!附上原文链接:https://www.acwing.com/solution/acwing/content/5159/思路:每个状态可以影响到往下两层,所以要枚举当前行状态,上一行状态以及上上行的状态,同样,记录的时候也要再加一维,dp[i][j][k]表示...

2020-01-28 17:01:41 175

原创 哈希表:字符串(前缀哈希法)

题目链接:https://www.acwing.com/problem/content/843/题意:给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2,请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。且字符串中只包含大小写英文字母和数字。数据范围1≤n,m≤1e5输入样例:8 3aabbaabb1 3 5 71 3...

2020-01-27 23:15:54 1956 3

原创 哈希表:模拟散列表

题目链接:https://www.acwing.com/problem/content/842/题意:维护一个集合,支持如下几种操作:1,“I x”,插入一个数x;2,“Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。如果x在集合中出现过,则输出“Yes”,否则输出“No”。数据范围1≤N≤1e5−109≤x≤1e9输入样例:5I 1...

2020-01-27 22:26:08 173

原创 堆:模拟堆

题目链接:https://www.acwing.com/problem/content/841/题意:维护一个集合,初始时集合为空,支持如下几种操作:1,“I x”,插入一个数x;2,“PM”,输出当前集合中的最小值;3,“DM”,删除当前集合中的最小值(数据保证此时的最小值唯一);4,“D k”,删除第k个插入的数;5,“C k x”,修改第k个插入的数,将其变为x;现在要进行N次...

2020-01-27 20:22:59 272 1

原创 堆:堆排序

题目链接:https://www.acwing.com/problem/content/840/题意:输入一个长度为n的整数数列,从小到大输出前m小的数。数据范围1≤m≤n≤1e5,1≤数列中元素≤1e9输入样例:5 34 5 1 3 2输出样例:1 2 3思路:代码实现:...

2020-01-27 17:38:32 156

原创 并查集:食物链(带权并查集)

题目链接:https://www.acwing.com/problem/content/242/题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是”1 X Y”,表示X和Y是同类。...

2020-01-26 21:51:54 703

原创 并查集:连通块中点的数量

题目链接:https://www.acwing.com/problem/content/839/题意:给定一个包含n个点(编号为1~n)的无向图,初始时图中没有边。现在要进行m个操作,操作共有三种:1,“C a b”,在点a和点b之间连一条边,a和b可能相等;2,“Q1 a b”,询问点a和点b是否在同一个连通块中,a和b可能相等;3,“Q2 a”,询问点a所在连通块中点的数量;数据范...

2020-01-26 19:53:19 432

原创 并查集:合并集合

题目链接:https://www.acwing.com/problem/content/838/题意:一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:1,“M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;2,“Q a b”,询问编号为a和b的两个数是否在同一个集合中;数据范围1≤n,m≤1e5...

2020-01-26 17:53:28 423

原创 Trie:最大异或对

题目链接:https://www.acwing.com/problem/content/145/题意:在给定的N个整数A1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少?数据范围1≤N≤1e5,0≤Ai<2^31输入样例:31 2 3输出样例:3思路:代码实现:...

2020-01-26 16:40:16 146

原创 Trie:字符串统计

题目链接:https://www.acwing.com/problem/content/837/题意:维护一个字符串集合,支持两种操作:“I x”向集合中插入一个字符串x;“Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。数据范围1≤N≤2e4输入样例:5I abcQ abcQ abI abQ ab输...

2020-01-25 23:11:14 234

原创 Kmp算法

题目链接:https://www.acwing.com/problem/content/833/题意:给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串P在模式串S中多次作为子串出现。求出模板串P在模式串S中所有出现的位置的起始下标。输入格式第一行输入整数N,表示字符串P的长度。第二行输入字符串P。第三行输入整数M,表示字符串S的长度。第四行...

2020-01-25 22:37:02 145

原创 单调队列:滑动窗口

题目链接:https://www.acwing.com/problem/content/156/题意:给定一个大小为n≤1e6的数组。有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。您只能在窗口中看到k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为[1 3 -1 -3 5 3 6 7],k为3。输入样例:8 31 3 -1 -3 5 3 6 7输出样例:...

2020-01-25 19:50:10 297

原创 单调栈(数组模拟)

题目链接:https://www.acwing.com/problem/content/832/题意:给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2思路:对于这种题显然是可以暴力解决的,但要是想要优化一下就得思考一下。本题的意思是找到离某...

2020-01-25 15:31:03 204

原创 模拟队列

题目链接:https://www.acwing.com/problem/content/831/题意:实现一个队列,队列初始为空,支持四种操作:(1) “push x” – 向队尾插入一个数x;(2) “pop” – 从队头弹出一个数;(3) “empty” – 判断队列是否为空;(4) “query” – 查询队头元素。现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相应的...

2020-01-25 13:20:27 704

原创 模拟栈

题目链接:https://www.acwing.com/problem/content/830/题意:实现一个栈,栈初始为空,支持四种操作:(1) “push x” – 向栈顶插入一个数x;(2) “pop” – 从栈顶弹出一个数;(3) “empty” – 判断栈是否为空;(4) “query” – 查询栈顶元素。现在要对栈进行M个操作,其中的每个操作3和操作4都要输出相应的结果。...

2020-01-22 22:31:41 199

原创 静态双链表(数组模拟)

题目链接:https://www.acwing.com/problem/content/829/题意:实现一个双链表,双链表初始为空,支持5种操作:(1) 在最左侧插入一个数;(2) 在最右侧插入一个数;(3) 将第k个插入的数删除;(4) 在第k个插入的数左侧插入一个数;(5) 在第k个插入的数右侧插入一个数现在要对该链表进行M次操作,进行完所有操作后,从左到右输出整个链表。注意...

2020-01-22 22:19:15 449

原创 静态单链表(数组模拟)

题目链接:https://www.acwing.com/problem/content/828/题意:实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插...

2020-01-22 21:49:25 277

原创 Codeforces 1293(A,B,C)Round#614(Div.2)

题目链接:https://codeforces.com/contest/1293A. ConneR and the A.R.C. Markland-N题意:有n层高的大楼,其间有k层没有餐厅,试问从第s层出发需要经过多少层才能到达最近的餐厅?思路:刚开始打算开一个数组向两边遍历,结果才发现1e9的数据范围太大!!最后就用list存储遍历啦。代码实现:#include<bits/st...

2020-01-22 20:30:33 180

原创 区间合并

题目链接:https://www.acwing.com/problem/content题意:给定 n 个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3]和[2,6]可以合并为一个区间[1,6]。数据范围1≤n≤100000,−109≤li≤ri≤109输入样例:51 22 45 67 87 9...

2020-01-21 22:41:08 401

原创 离散化:区间和

题目链接:https://www.acwing.com/problem/content/804/题意:假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。近下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。数据范围−109≤x≤109,1≤n,m≤105,−109≤l≤r≤...

2020-01-21 20:59:49 498

原创 双指针算法:数组元素的目标和

题目链接:https://www.acwing.com/problem/content/802/题意:给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i] + B[j] = x的数对(i, j)。数据保证有唯一解。数据范围数组长度不超过100000。同一数组内元素各不相同。1≤数组元素≤109输入样例:4 5 61 2 4 73 4 6 ...

2020-01-21 18:08:45 219

原创 双指针算法:最长连续不重复子序列

题目链接:https://www.acwing.com/problem/content/801/题意:给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。数据范围1≤n≤100000输入样例:51 2 2 3 5输出样例:3思路:其实这种类型的题也可以暴力枚举做,不过时间复杂度就是O(n^2)了;利用双指针不断移动更新指针的位置,就可以把暴力的算法优化...

2020-01-21 14:19:28 280

原创 dfs + 记忆化 :滑雪

题目链接:https://www.acwing.com/problem/content/903/题意:给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。数据...

2020-01-21 11:55:50 207

原创 状态压缩dp:最短Hamilton路径

题目链接:https://www.acwing.com/problem/content/93/题意:给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i...

2020-01-20 18:42:37 187

转载 状态压缩dp:蒙德里安的梦想

题目链接:https://www.acwing.com/problem/content/293/题意:求把NM的棋盘分割成若干个12的的长方形,有多少种方案。例如:当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:数据范围1≤N,M≤11输入样例:1 21 31 42 22 32 42 114 110 0输出样例:10123...

2020-01-20 17:39:42 235

原创 数位统计dp:计数问题

题目链接:https://www.acwing.com/problem/content/340/题意:给定两个整数 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次,...

2020-01-20 16:17:58 398 3

原创 计数类dp:整数划分

题目链接:https://www.acwing.com/problem/content/902/题意:一个正整数n可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数n的一种划分。现在给定一个正整数n,请你求出n共有多少种不同的划分方法。数据范围1≤n≤1000输入样例:5输出样例:7思路1:用完全背包思维...

2020-01-19 21:02:34 308

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除