- 博客(8)
- 问答 (1)
- 收藏
- 关注
原创 基础图论知识补全计划1:Kruskal(克鲁斯卡尔)算法汇总
判断该题要求的是严格次小,因此需要记录最小生成树中每两点间的最大边跟次大边,当未利用边权值跟最大边相等时,不能拿其替换,(因为要求严格次小,这样换完值不变),因此要拿次大边跟未利用边换,而当未利用边大于最大边时,直接换最大边即可。2.把跑出来是最小生成树的每一个节点看作二叉树的叶子节点,升序排列所有边权,在其对应的两点间建立父亲节点,其权值记为这两点的边权值,查询时跑两个点的lca,找出的点的权值即为所求答案。3.遍历未利用的边,记录替换后跟原来的差值,找最小的即可。1.先跑一个最小生成树,确保路径唯一。
2022-11-02 21:31:55
296
原创 AcWing 342. 道路与航线 (双端队列广搜问题,SPFA)
对于道路,0≤Ci≤10,0000≤Ci≤10,000;然而航线的花费很神奇,花费CiCi可能是负数(−10,000≤Ci≤10,000−10,000≤Ci≤10,000)。事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台了一些政策保证:如果有一条航线可以从AiAi到BiBi,那么保证不可能通过一些道路和航线从BiBi回到AiAi。第1..T行:第i行输出从S到达城镇i的最小花费,如果不存在,则输出“NO PATH”。道路是双向的,可以从AiAi到BiBi,也可以从BiBi到AiAi,花费都是CiCi。
2022-09-29 21:46:07
283
原创 图论1:tarjan强连通分量的认识
联通:无向图中从任意点i可到达任意点j;强联通:在有向图中可以从任意点i到达任一点j;弱联通:就是联通的意思啦:联通分量的概念:如图,对于这么一张有向图来说,(a,g,f)和(b,c,d)和e三组分别构成3个强联通分量。该算法的用途就是给你一个图让你求(a,g,f)和(b,c,d)和e这三组玩意算法实现方面:基础算法是用dfs,dfs的遍历方式是先递归相邻节点,再访问当前节点。比如上面那张图,;来到a这个点,我们先遍历b,f点后再来处理a,这是基本递...
2022-05-14 22:36:52
750
1
原创 有关优先队列问题的一些整理
首先,先说说优先队列重载格式注意:这里的x<y建立出来的优先队列是降序的,大的在前面,可以理解成x<y这个式子如果成立就执行交换操作,让大的那个到前面去。默认优先队列也是降序的。然后就是做优先队列题目的一些小思路1.题目链接:1011-小A与任务_2021秋季算法入门班第五章习题:优先队列、并查集 (nowcoder.com)如这道题目该如何用优先队列去解它,那么在此之前我们要先了解优先队列的用途,在做优先队列题目时我们必须要明白优先队列与...
2022-05-11 22:25:22
544
1
原创 关于set容器自定义操作的一些细节
首先我们知道set容器的用途的去重+排序。而通过自定义重载运算符,我们就可以对set里面的去重和排序操作进行自定义;比如说我要把去重这个功能改成如果两个元素的差值在k以内就删去一个,就可以这么写:structcmp{booloperator()(constint&u,constint&v)const{if(abs(u-v)<=k)returnfalse;returnu<v;...
2022-05-11 21:31:47
177
原创 写优先队列问题的一些技巧
1.自定义排序的方式:对于一些特殊问题需要我们对如结构体的其中一个关键字进行优先队列的排序,或者自己规定一个排序的方式,那么就要用到自定义操作符。具体格式为;;;struct panpan{bool operator()(ww x,ww y){return x.next<y.next;}};priority_queue<ww,vector<ww>,panpan>que;priority_queue<ww,vector<ww>
2022-05-10 21:06:26
127
原创 翻译翻译一份如果i最小生成树问题(prim算法于kruskal算法的应用)
定义:如果一个无向连通图不包含回路,那么就是一个树,比如几个城市的交通路线连通图,而最小生成树就相当于是线路网中选择一条最优解(最短路)方法1:prim用到了贪心的思想,对于一个点我们找于之最近(权值最小)的点来建立通路,以此类推下去。...
2022-03-31 21:16:59
134
原创 用动态规划求最长上升子序列问题(时间复杂度低)
题目:G. 最长递增长度 (nowcoder.com)#include<bits/stdc++.h>using namespace std;const long long maxx=0x3f3f3f3f3f3f3f3f;const long long minn=0xc0c0c0c0c0c0c0c0;const double pi = 4.0*atan(1.0);#define int long long#define f(i,n,m) for(long long i=n;i<
2022-03-07 19:49:21
886
空空如也
clion环境已经配置好了但是不能run是怎么回事,run的图标是灰色的
2021-10-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人