P1983 车站分级 思维+拓扑排序】的更多相关文章

很久以前的一道暑假集训的题,忘了补. 感觉就是思维建图,加拓扑排序. 未停靠的火车站,必然比停靠的火车站等级低,就可以以此来建边,此处注意用vis来维护一下,一个起点和终点只建立一条边,因为不这样的话会重复建边. 虽然重复建边拓扑排序的时候,统计入度,更新入度的时候完全不影响结果,因为这个重复的点和入度都统计了,也都会在拓扑的删去,答案依然正确. 但是重复建边vector会弄的很大,导致MLE(我debug好久才发现MLE的原因).洛谷上只能get到80分,加了vis就100了. 主要是思维吧,…
题目传送门 我们注意到,题目中说:如果这趟车次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站x的都必须停靠.有阶级关系,满满的拓扑排序氛围.但是,如果我们按大于等于的关系连,等于的情况就会连双向边,这不利于我们在有向无环图中(DAG)进行拓扑排序.于是我们不妨换一种思路,将所有小于当前火车站级别的车站向输入的车站序列间连一条有向边.之后边拓扑排序边更新车站级数即可. 注意建图的细节过程.首先对于每个车次,我们应该从起点出发终点结束,也就是代码中的w[1]和w[n]:其次由于有很多车…
洛谷\(P1983\)车站分级(拓扑排序) 目录 题目描述 题目分析 思路分析 代码实现 题目描述 题目在洛谷\(P1983\)上 ​ 题目: 一条单向的铁路线上,依次有编号为 \(1, 2, -, n1,2,-,n\)的 \(n\)个火车站.每个火车站都有一个级别,最低为 11 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 \(x\),则始发站.终点站之间所有级别大于等于火车站\(x\) 的都必须停靠.(注意:起始站和终点站自然也算作事先已知需要停靠的站点…
P1983 车站分级 297通过 1.1K提交 题目提供者该用户不存在 标签图论贪心NOIp普及组2013 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 求帮忙指出问题! 我这么和(diao)谐(zha)… 题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站.每个火车站都有一个级 别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车 次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站 x 的都必须停靠.(注 意…
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n1,2,-,n的 nn个火车站.每个火车站都有一个级别,最低为 11 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 xx,则始发站.终点站之间所有级别大于等于火车站xx 的都必须停靠.(注意:起始站和终点站自然也算作事先已知需要停靠的站点) 例如,下表是55趟车次的运行情况.其中,前44 趟车次均满足要求,而第 5 趟车次由于停靠了 3 号火车站(2级)却未停靠途经的 6号火车站(亦为 2 级)…
题目链接 https://www.luogu.org/problemnew/show/P1983 题目描述 一条单向的铁路线上,依次有编号为 1,2,…,n的 n个火车站.每个火车站都有一个级别,最低为1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站x 的都必须停靠.(注意:起始站和终点站自然也算作事先已知需要停靠的站点) 例如,下表是5 趟车次的运行情况.其中,前4 趟车次均满足要求,而第 5趟车次由于停靠了…
题目 这个题非常毒瘤,只要还是体现在其思维难度上,因为要停留的车站的等级一定要大于不停留的车站的等级,因此我们可以从不停留的车站向停留的车站进行连边,然后从入度为0的点即不停留的点全都入队,然后拓扑排序即可 代码 #include <bits/stdc++.h> #pragma GCC optimize(2) #pragma GCC optimize(3) using namespace std; int in[199091], lin[100100], dep[100100], data[1…
这题好像是个蓝题.(不过也确实差不多QwQ)用到了拓扑排序的知识 我们看这些这车站,沿途停过的车站一定比未停的车站的级别高 所以,未停靠的车站向已经停靠的车站连一条边,入度为0的车站级别就看做1 然后我们把入度为0的边依次取出来,那么它的出边所指车站就一定比这个车站级别高 那么也就是说,一个车站的级别一定比所有指向它的车站中,级别最高的那个车站级别还要高1级 (x的级别小于y) 再跑一个拓扑就行了qwq Code: #include<bits/stdc++.h> using namespace…
%%%rqy 传送 我们注意到题目中这段话: 既然大于等于x的站都要停,那么不停的站的级别是不是都小于x?(这里讨论在始发站和终点站以内的站(注意这里是个坑)) 我们可以找出每趟车没停的站,向所有停了的站建一条边,表示没停的站的级别<停了的站的级别,同时记录所有的站的入度 这样,一开始入度为0的站级别就是1. 对于那些入度不为0的点来说,它们的级别就是所有指向它的点中,级别最大的那个点的级别+1 for example 因为每个级别为a车站x不一定只有级别为a-1的车站向x连边. 那程序怎么实现…
题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站 x 的都必须停靠.(注意:起始站和终点站自然也算作事先已知需要停靠的站点) 例如,下表是 5 趟车次的运行情况.其中,前 4 趟车次均满足要求,而第 5 趟车次由于停靠了 3 号火车站(2 级)却未停靠途经的 6 号火车站(亦为 2 级)而不满足要…