2024年11月21日
摘要: 方法一:先对总榜按要求进行排序,再遍历总榜时持续维护绝对排名和相对排名并输出即可 方法二:结构体中包含本地排名,在每输入一个测试点的数据以后就进行局部排序,得到本地排名,再将局部信息push到总榜中,再对总榜进行排序,直接输出即可。 方法一需要多开三个数组来维护本地排名信息,空间复杂度高了,但时间复 阅读全文
posted @ 2024-11-21 20:30 Coder何 阅读(0) 评论(0) 推荐(0) 编辑
  2024年11月20日
摘要: 本题主要考察大数相加,有注意点: 1.使用reverse函数可以快速反转string 2.若是常规的大数相加,记得注意两数的长度来控制遍历条件。 1 #include<bits/stdc++.h> 2 using namespace std; 3 string n; 4 int k; 5 bool 阅读全文
posted @ 2024-11-20 21:39 Coder何 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 要注意输入输出:1.输入带空格的string类时使用getline函数 2.使用cin输入后需要使用getchar()清除行末换行符,否则下一行的输入会受影响(getline操作会多出一个空行) 3.该题在连续读取关键字时,使用getchar()可以很方便地找到换行符 4.scanf、printf的 阅读全文
posted @ 2024-11-20 20:57 Coder何 阅读(0) 评论(0) 推荐(0) 编辑
  2024年11月19日
摘要: 先通过并查集判断有几个连通图,如果只有一张图,那就用两次dfs/bfs来找到树的直径上的所有端点 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 vector<int> edges[10005]; 5 bool visited[ 阅读全文
posted @ 2024-11-19 21:12 Coder何 阅读(0) 评论(0) 推荐(0) 编辑
  2024年11月15日
摘要: 该题考查多条最短路径的计算,对比单条最短路,主要有两点不同: 1.在dijkstra算法中记录每个结点的所有相同最短距离的前结点 2.在dfs找多条最短路径时需要回溯状态 拿到所有最短路径以后,我们根据题意去获取相应的结果即可 1 #include<bits/stdc++.h> 2 using na 阅读全文
posted @ 2024-11-15 21:24 Coder何 阅读(4) 评论(0) 推荐(0) 编辑
  2024年11月12日
摘要: 基础原理:特殊的生成树 给定一张无向图,其中边权都是正数,你需要求出总代价最小的生成树,生成树上每条边 (u,v)(u,v) 的代价为 w(u,v)∗count(v)w(u,v)∗count(v),其中 w(u,v)w(u,v) 为边 (u,v)(u,v) 的权值,count(v)count(v)  阅读全文
posted @ 2024-11-12 23:45 Coder何 阅读(7) 评论(0) 推荐(0) 编辑
  2024年11月8日
摘要: 学习堆优化的写法 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, m, a, b, c; 4 typedef pair<int, int> pii; //first表示距离,second表示节点号 5 vector<pii> gra 阅读全文
posted @ 2024-11-08 21:07 Coder何 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目要求的是最远的两个节点的距离,即求树的直径(树中所有最短路径距离的最大值即为树的直径 求树的直径有两种做法,两次bfs(或者dfs),另一种是用树形DP 本文用两次DFS实现 #include<bits/stdc++.h> using namespace std; int n, u, v; ve 阅读全文
posted @ 2024-11-08 19:18 Coder何 阅读(4) 评论(0) 推荐(0) 编辑
  2024年11月4日
摘要: BFS可以解决无权图的单源最短问题 注意在queue中用结束标识来节约队列空间。也可以用vector来实现队列,用[left,right]控制队列。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, m, c; 4 vector<in 阅读全文
posted @ 2024-11-04 20:44 Coder何 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 因为有重复数据,所以不得不等输入完以后再进行有向图的遍历。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, m; 4 set<int> graph[1005]; 5 vector<bool> visited(1005, false) 阅读全文
posted @ 2024-11-04 19:39 Coder何 阅读(8) 评论(0) 推荐(0) 编辑