![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AcWing算法基础课
文章平均质量分 52
NK_Amor Fati
这个作者很懒,什么都没留下…
展开
-
第六章贪心(一):区间问题的应用
第六章贪心(一):区间问题的应用AcWing 111. 畜栏预定题目有 N 头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。给定 N 头牛和每头牛开始吃草的时间 A 以及结束吃草的时间 B,每头牛在 [A,B] 这一时间段内都会一直吃草。当两头牛的吃草区间存在交集时(包括端点),这两头牛不能被安排在同一个畜栏吃草。求需要的最小畜栏数目和每头牛对应的畜栏方案。输入格式第 1 行:输入一个整数 N。第 2…N+1 行:第 i+1 行输入第 i 头牛的开始吃原创 2022-03-04 21:39:19 · 117 阅读 · 0 评论 -
第一章基础算法:高精度
第一章基础算法:高精度高精度加法、减法、乘法、除法没有什么特别的算法思维,就是利用vector进行正常的加减乘除的操作。板子比较简单,但高精度与其他算法融合可能有些难,如国王游戏。AcWing 791:高精度加法#include <iostream>#include <vector>using namespace std;vector<int> add(vector<int> &A, vector<int> &B)原创 2022-03-04 16:47:15 · 60 阅读 · 0 评论 -
第六章贪心(四):推公式(AcWing 125:耍杂技的牛 && AcWing 114:国王游戏)
AcWing 125:耍杂技的牛题目农民约翰的 N 头奶牛(编号为 1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这 N 头奶牛中的每一头都有着自己的重量 Wi 以及自己的强壮程度 Si。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可原创 2022-03-04 11:51:27 · 113 阅读 · 0 评论 -
第六章贪心(三):排序不等式、绝对值不等式
第六章贪心(三):排序不等式AcWing 913:排队打水题目有 n 个人排队到 1 个水龙头处打水,第 i 个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?输入格式第一行包含整数 n。第二行包含 n 个整数,其中第 i 个整数表示第 i 个人装满水桶所花费的时间 ti。输出格式输出一个整数,表示最小的等待时间之和。解答t1, t2, t3, … , tn总时间 = t1×(n-1) + t2×(n-2) + t3×(n-3) + …按照从小原创 2022-03-03 20:38:36 · 347 阅读 · 0 评论 -
第六章贪心(二):Huffman树
第六章贪心(二):Huffman树AcWing 148:合并果子(贪心,哈夫曼树,堆,优先队列) O(nlogn)经典哈夫曼树的模型,每次合并重量最小的两堆果子即可。时间复杂度使用小根堆维护所有果子,每次弹出堆顶的两堆果子,并将其合并,合并之后将两堆重量之和再次插入小根堆中。每次操作会将果子的堆数减一,一共操作 n−1次即可将所有果子合并成1堆。每次操作涉及到2次堆的删除操作和1次堆的插入操作,计算量是 O(logn)。因此总时间复杂度是 O(nlogn)。#include <iostr原创 2022-03-03 20:14:59 · 100 阅读 · 0 评论 -
第六章贪心(一):区间问题
AcWing905:区间选点题目给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数 N,表示区间数。接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。解答将每个区间按右端点从小到大排序从前往后依次枚举每个区间如果当前区间中已经包含点,则直接pass;否则,选择当前区间的右端点证明:原创 2022-03-03 16:49:37 · 292 阅读 · 0 评论