11 2024 档案
1179 Chemical Equation(搜索 + 回溯)
摘要:先把各产物对应的公式按题面要求的从小到大进行排序(丢set里让他自己排序就行),搜索条件有两个: 1.每个原料最多使用一次 2.每个产物都要被生成 排序后,搜索得到的第一个解就是最优解。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n 阅读全文
posted @ 2024-11-28 20:48 Coder何 阅读(87) 评论(0) 推荐(0)
1030 Travel Plan(dijsktra + dfs/bfs + 回溯)
摘要:题面意思比较清晰,就是优先最短路,同距离取最小花费。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, m, s, d; 4 typedef pair<int, int> pii; 5 vector<pii> graph[505]; 阅读全文
posted @ 2024-11-26 21:30 Coder何 阅读(41) 评论(0) 推荐(0)
1025 PAT Ranking(模拟、排序)
摘要:方法一:先对总榜按要求进行排序,再遍历总榜时持续维护绝对排名和相对排名并输出即可 方法二:结构体中包含本地排名,在每输入一个测试点的数据以后就进行局部排序,得到本地排名,再将局部信息push到总榜中,再对总榜进行排序,直接输出即可。 方法一需要多开三个数组来维护本地排名信息,空间复杂度高了,但时间复 阅读全文
posted @ 2024-11-21 20:30 Coder何 阅读(35) 评论(0) 推荐(0)
1024 Palindromic Number(回文串、大数相加)
摘要:本题主要考察大数相加,有注意点: 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何 阅读(34) 评论(0) 推荐(0)
1022 Digital Library(模拟)
摘要:要注意输入输出:1.输入带空格的string类时使用getline函数 2.使用cin输入后需要使用getchar()清除行末换行符,否则下一行的输入会受影响(getline操作会多出一个空行) 3.该题在连续读取关键字时,使用getchar()可以很方便地找到换行符 4.scanf、printf的 阅读全文
posted @ 2024-11-20 20:57 Coder何 阅读(24) 评论(0) 推荐(0)
1021 Deepest Root(树的直径、bfs/dfs、并查集)
摘要:先通过并查集判断有几个连通图,如果只有一张图,那就用两次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何 阅读(26) 评论(0) 推荐(0)
1018 Public Bike Management(多条最短路径,dijkstra+dfs+回溯)
摘要:该题考查多条最短路径的计算,对比单条最短路,主要有两点不同: 1.在dijkstra算法中记录每个结点的所有相同最短距离的前结点 2.在dfs找多条最短路径时需要回溯状态 拿到所有最短路径以后,我们根据题意去获取相应的结果即可 1 #include<bits/stdc++.h> 2 using na 阅读全文
posted @ 2024-11-15 21:24 Coder何 阅读(39) 评论(0) 推荐(0)
计蒜客:圣诞树(dijkstra,特殊的生成树)
摘要:基础原理:特殊的生成树 给定一张无向图,其中边权都是正数,你需要求出总代价最小的生成树,生成树上每条边 (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何 阅读(68) 评论(0) 推荐(0)
计蒜客:骑车比赛(Dijkstra)
摘要:学习堆优化的写法 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何 阅读(28) 评论(0) 推荐(0)
计蒜客:网络延迟(DFS/BFS)
摘要:题目要求的是最远的两个节点的距离,即求树的直径(树中所有最短路径距离的最大值即为树的直径 求树的直径有两种做法,两次bfs(或者dfs),另一种是用树形DP 本文用两次DFS实现 #include<bits/stdc++.h> using namespace std; int n, u, v; ve 阅读全文
posted @ 2024-11-08 19:18 Coder何 阅读(45) 评论(0) 推荐(0)
计蒜客:最短路简化版(BFS)
摘要: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何 阅读(69) 评论(0) 推荐(0)
计蒜客:互粉攻略(DFS/BFS)
摘要:因为有重复数据,所以不得不等输入完以后再进行有向图的遍历。 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何 阅读(40) 评论(0) 推荐(0)
计蒜客:农场看守(DFS、欧拉回路)
摘要:输入样例: 4 5 1 2 1 4 2 3 2 4 3 4 输出样例: 1 2 3 4 2 1 4 3 2 4 1 直接对边访问数组进行维护的同时,一次dfs就能走完两遍。 没想明白为啥欧拉回路可以这样做。 1 #include<bits/stdc++.h> 2 using namespace st 阅读全文
posted @ 2024-11-01 20:24 Coder何 阅读(46) 评论(0) 推荐(0)
计蒜客:修建大桥(并查集/DFS/BFS)
摘要:找到有几张连通图即可解决问题。 DFS: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, m; 4 int graph[1005][1005] = {0}; 5 bool visited[1005] = {false}; 6 voi 阅读全文
posted @ 2024-11-01 19:28 Coder何 阅读(28) 评论(0) 推荐(0)