自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

在人间贩卖声音

等凑够满天星辰,放烟花给你看。

  • 博客(9)
  • 收藏
  • 关注

原创 【Ybtoj 第13章例4】工作安排【二叉堆】

解题思路 我们将所有工作按截至日期升序排列,依次枚举,用一个变量tottottot记录现在花费的时间(每个工作花费时间为1),然后把所得利润放进堆中,tot++tot++tot++,答案加上所得利润,如果tot比当前工作截止日期大,就把堆顶踢出来(堆顶的利润最小),答案减去所得利润,。 代码 #include<iostream> #include<cstdio> #include<iomanip> #include<cstring> #inclu...

2021-04-08 16:27:13 105

原创 【Ybtoj 第13章例3】龙珠游戏【二叉堆】

解题思路 因为题目要求字典序最大的方案,所以前面的数要尽量大,我们这里以每次取出的两个颗龙珠前者为准(应为他排在前面呀)。我们利用堆快速找出最大的编号及其位置(如果该位置标记为找过就重找),并用单向链表维护位置i之后最靠前的未被找出的龙标位置,并将这两个打上找过的标记。 代码 #include<iostream> #include<cstdio> #include<iomanip> #include<cstring> #include<al...

2021-04-07 21:16:53 174

原创 【Ybtoj 第13章例2】序列合并【二叉堆】

解题思路 观察题目,A,BA,BA,B数组都已近按从小到大的顺序排序,我们可以轻松得出一个结论:A[i]+B[j]<=A[i]+B[j+1]A[i]+B[j]<=A[i]+B[j+1]A[i]+B[j]<=A[i]+B[j+1],然后根据这个结论我们可以把那些和看成形成了n个有序队列: A[1]+b[1]=A[1]+B[2]……<=A[1]+B[N]A[1]+b[1]=A[1]+B[2]……<=A[1]+B[N]A[1]+b[1]=A[1]+B[2]……<=A...

2021-04-07 17:29:12 167

原创 【Ybtoj 第13章例1】合并果子【二叉堆】

知识点:关于堆 PS:还记得上周,我跟ajajaj说我们没有完整学过堆,只是之前打过类似题目,然后ajajaj大吃一惊,在机房问其他人,结果我震惊了,旁边的巨爷都说学过了,所以真的就我没打过堆(手打堆)吗???然后对面的cyzcyzcyz十分扎心地补了一句:“哦,那应该就。。(我)没有学吧”。。。然后aj就肯定的认为我之前没有来上课。。。我??? 结果:我气的跳过了前面的章节,直接来学堆了。。 当然,我还是很懒不想总结,所以现在就到了安利博客的时间了:关于堆1+关于堆2 上面的博客,思路较清楚,...

2021-04-07 17:20:04 118

原创 【Ybtoj 第12章例4】汽车加油【最短路径】

解题思路 考虑dis(i,j,k)dis(i,j,k)dis(i,j,k),表示位于(i,j)(i,j)(i,j)还可以走k条边的最小费用。 若(i,j)(i,j)(i,j)已设置油库,dis(i,j,k)=min{dis(i,j,k)+A}(0<=k<K)dis(i,j,k)=min{dis(i,j,k)+A}(0<=k<K)dis(i,j,k)=min{dis(i,j,k)+A}(0<=k<K) 若(i,j)(i,j)(i,j)未设置油库,dis(i,j...

2021-04-07 16:58:19 154

原创 【Ybtoj 第12章例2】判断负环【最短路径课堂过关】

解题思路 判断有无负环:如果某个点加入队列的次数大于等于nnn次,则说明存在负环,注意要用SPFA判断负环,DijkstraDijkstraDijkstra不能用来判断负环。期望复杂度O(m)O(m)O(m),最坏复杂度O(nm)O(nm)O(nm)。 PS:这道题的“YE5”“YE5”“YE5”(不是“S”“S”“S”是“5”“5”“5”)和“N0”“N0”“N0”(不是“O”“O”“O”是“0”“0”“0”)!!! 再一次想给出题人寄刀片。。 代码 #include<iostream...

2021-04-03 17:10:16 135

原创 【Ybtoj 第12章例1】单源最短路径【最短路径课堂过关】

解题思路 Dijkstra 是最短路中常用的,原时间复杂度为O(n2)O(n^2)O(n2),但是我们可以用堆优化,使它变成O(nlogn)O(nlogn)O(nlogn)(可以先看完上面的博客再来理解堆优化) 算法中有一步:“进行nnn次循环,每次找出一个到起点距离dis[u]dis[u]dis[u]最短的点uuu”可以用堆结构来实现。STLSTLSTL中的priorityprioritypriority_queuequeuequeue能在O(logn)O(logn)O(logn)的时间复杂度...

2021-04-03 16:31:31 102

原创 【洛古 P1908 】逆序对【归并排序】【分治】

解题思路 (1) 归并排序: 它的基本思想是:将待排序的数列分成两个小的数列,先对两个子集进行排序,然后进行两个有序子集的合并,形成排序后的数一列,然后对子的处理方法与刚才的处理方法是一致的,直到子集中只存在一个整数为止。 (2)计算逆序对 归并排序即是将数列分为长度相等或相差1的两段,分别递归进行归并排序,然后两段成为两个有序队列,每次在两个队列中选取队首元素的较小值,排成一列后就得到有序的数列. 如果逆序对的两个元素在一次拆分中被分到了同一边,我们暂时不必理会,因为随着递归的进行,总有一天他...

2021-04-03 16:12:39 118

原创 【洛古 P1138】【SSL 1421】 第k小整数【手打快排】【分治】

解题思路 利用快速排序的思想,从序列中取一个数mid,然后把序列分成小于等于mid和大于等于mid的两部分,由两个部分的元素个数和k的大小关系可以确定这个数是在哪个部分。对部分序列的探查可以递归处理。 时间复杂度近似为O(n)O(n)O(n) 代码 洛古 #include<iostream> #include<cstdio> #include<iomanip> #include<cstring> #include<algorithm> #i...

2021-04-03 16:07:03 79

空空如也

空空如也

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

TA关注的人

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