![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图
van之风
这个作者很懒,什么都没留下…
展开
-
P1983 车站分级
这道题层次分明,很显然用拓扑排序:首先要注意审题:如果这趟车次停靠了火车站 xx,则始发站、终点站之间所有级别大于等于火车站 xx 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)这句话要理解一下:她说如果停靠在了火车站XX,后面只要是大于等于XX的都必须停靠,但是他没说小于XX的火车站不停靠…就比如上图第一趟火车 :3 2 3 2(火车站的优先等级),我们最开始在优先级为3的火车站,后来又跑到了优先级为2的火车站,所以并不是小于XX的都不停,也有可能停住.注意上面,我们停..原创 2020-05-21 09:54:20 · 254 阅读 · 0 评论 -
P1347 排序
这道题一看就是拓扑排序,不过细节特别要注意。题目中说了,如果某一步能判断n个字母的大小关系,那么就输出第几步可以判断这些大小关系,并输出从小到大的序列,例如样例1就是第4步就可以判断大小关系了,后面说的看都不用看如果某一步会导致矛盾,就输出导致矛盾的那一步。例如上面的样例2第2步可以判断发生矛盾如果遍历完所有步数都不能判断大小关系,也不能判断矛盾关系,那么就是不能确定了,输出即可。思路:对于每次输入一个字符串,我们都建议一条有向边。然后进行拓扑排序。1.**我们如何去判断是否产生矛盾呢?**我..原创 2020-05-20 11:25:47 · 349 阅读 · 0 评论 -
P2853 [USACO06DEC]Cow Picnic S
很好的一道图的遍历题目,我们开一个1000*1000的数组,a[i][j]==true,表示i号顶点可以到达j号顶点,a[i][j]=false.表示i号顶点不能到大j号顶点,最后们对k个奶牛分别进行遍历,如果这K个奶牛都可以到达1—N之间的一个点,就把结果+1.当然还有更简单的做法,那就是直接开一个数组a[],a[i]表示这k头奶牛中可以到达i这个点的数量,如果a[i]==k,就把结果+1当然我是用第一种做的,下面是AC代码~#include <iostream>#include ..原创 2020-05-18 13:04:43 · 170 阅读 · 0 评论 -
P1807 最长路
这道题,第一反应就是SPFA。由于最开始的邻接表没有优化,T了三个点。后来我看了算法笔记才知道。使用SPFA的时候,要在搞一个数组,判断某个节点是否在队列中,如果不在队列中,那么才有资格入队,如果在,就不能入队了,出队的时候将这个元素设置为不在队列中,入队的时候将这个·元素设置在队列中。下面是邻接表的AC代码~#include <iostream>#include <vector>#include <queue>#include <cstring>.原创 2020-05-15 10:19:39 · 235 阅读 · 0 评论 -
P4017 最大食物链计数
这道题…看到结果要对80112002取模,我就知道数量很大,可我不知道能有这么大…首先测试数据生产者和最高级的食物链顶端可能有多个(亲测)然后我想的是,遍历所有生产者,累加这些生产者到最高级消费者的路径数目,每次加起来就取一次模,害怕数据过大,特地开了long long 结果数据量还是超了,最开始我还以为是我算法写错了,害得我重新检查了一遍。后来我试着在每次dfs都取一下模AC了!!!!,这数据量是有多恐怖。。细思极恐。思路:我们设dp[i]为以i为起点到达最高级食物链的路径条数如图所示,dp[.原创 2020-05-13 22:09:46 · 639 阅读 · 0 评论 -
P1113 杂务
这道题是一道很好的拓扑排序入门题样例中的图画出来长这样~如图所示,我们可以这样考虑.设dp[i],的意义为从i号节点出发路径的最大值设int time[] 这个数组的意义是完成i号杂物所需要的时间很显然 time[1]=5,time[2]=2,time[3]=3,time[4]=6,time[5]=1,time[6]=8,time[7]=4 ,这样依次赋值就行了最后结果很显然就是 dp[1]=max(dp[2],dp[4])+time[1] ,这样所算出来的dp[1],就是完成所有杂物所..原创 2020-05-13 16:24:06 · 522 阅读 · 0 评论 -
P3916 图的遍历
这道题很简单…一上来直接DFS#include <iostream>#include <algorithm>#include <queue>#include <cstring>#define Max 100005using namespace std;vector<int > Graph[Max];int flag[Max];void dfs(int v,int Max_v);int res; int main().原创 2020-05-11 13:46:37 · 326 阅读 · 0 评论 -
P5318 【深基18.例3】查找文献
这道题可把我坑惨了~说两个踩坑点1.样例能过,如果全WA,多半是没有排序2.第三个点WA掉,请注意审题!!!!!使小 K 可以不重复、不遗漏的看完所有他能看到的文章也就是说并不是所有的文章都能被小A看完,我们只需要从1开始看,看完从1开始的强连通部分即可下面是AC代码~#include <iostream>#include <algorithm>#include <queue>#include <cstring>#define M..原创 2020-05-11 09:57:04 · 654 阅读 · 0 评论 -
P1364 医院设置
这道题节点数<=200可以直接用Floyd,看到有dalao用带权树,真心佩服,本蒟蒻只会用板子~Floyd算法思想:任意两个节点i, j 如果有一个中间节点u可以使得dis[i][u]+dis[u][j]<dis[i][j],那么我们就更新这个值dis[i][j]=dis[i][u]+dis[u][j]对于每两个节点,我们只需要枚举所有可能的中介节点,看看是否满足上面的条件,...原创 2020-04-26 08:57:00 · 432 阅读 · 0 评论 -
P3371 【模板】单源最短路径(弱化版)
这道题虽是模板题,但是有毒瘤数据,我被这个点坑惨了下面是毒瘤数据之一5 15 52 5 1811 5 984 2 493 2 2624 3 262 4 1925 1 2212 2 2544 4 2331 5 445 4 674 2 2141 1 471 1 1185 4 3看到没,有两个1–5,第一个1 5 98 第二个 1 5 44也就是存储路程的时...原创 2020-04-24 13:45:31 · 534 阅读 · 0 评论 -
迪杰斯特拉(Dijkstra)
心血潮来,想写一篇关于迪捷斯特拉算法的文迪捷斯特拉算法适合求单源最短路径的问题,例如给你一个图,要你算出某一个起点s,到其他任一点e的最短路径。Dijkstra有人说是贪心,有人说是dp,有人说是弱化版本的bfs,如果想知道原理的小伙伴建议去看算法导论的证明部分~如图所示,现在我们要求从v0----- 图中任意一个节点的最短路径。算法思路:首先建立一个数组int d[Max], 这个数组的...原创 2020-04-23 09:51:12 · 1129 阅读 · 0 评论