【luogu P1983 车站分级】 题解
题目链接:https://www.luogu.org/problemnew/show/P1983
符合了NOIP命题的特点,知识点不难,思维量是有的。
step1:把题读进去,理解。得到 非停靠点的等级 < 停靠点的等级
step2:把上述不等关系转化为有向图。即由非停靠点向停靠点连一条边
step3:对于每个入度为零的点dfs找最长路。取其max
step4:输出max+1
code:
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 500010;
int n, m, answer = -1e9, a[1010], start[1010], rudu[1010];
bool flag[1010];
struct edge{
int next, to, len;
}e[maxn<<2];
int cnt, head[maxn];
int dis[1010];
bool vis[1010], used[1010][1010];
void add(int u, int v, int w)
{
e[++cnt].to = v; e[cnt].next = head[u]; head[u] = cnt; e[cnt].len = w;
}
int SPFA(int s)
{
int ans = -1e9;
queue<int> q;
while(!q.empty()) q.pop();
for(int i = 1; i <= n; i++) dis[i] = -1e9;
memset(vis, 0, sizeof(vis));
dis[s] = 0, vis[s] = 1, q.push(s);
while(!q.empty())
{
int now = q.front(); q.pop();
vis[now] = 0;
for(int i = head[now]; i != -1; i = e[i].next)
{
if(dis[e[i].to] < dis[now] + e[i].len)
{
dis[e[i].to] = dis[now] + e[i].len;
if(!vis[e[i].to])
{
q.push(e[i].to);
vis[e[i].to] = 1;
}
}
}
}
for(int i = 1; i <= n; i++)
if(dis[i] != 1e9) ans = max(dis[i], ans);
return ans;
}
int main()
{
freopen("testdata.in","r",stdin);
memset(head, -1, sizeof(head));
scanf("%d%d",&n,&m);
for(int i = 1; i <= m; i++)
{
int k;
memset(flag, 0, sizeof(flag));
memset(a, 0, sizeof(a));
scanf("%d",&k);
for(int j = 1; j <= k; j++)
{
scanf("%d",&a[j]);
flag[a[j]] = 1;
}
for(int j = a[1]; j <= a[k]; j++)
{
if(flag[j] == 0)
{
for(int l = 1; l <= k; l++)
if(used[j][a[l]] == 0)
{
add(j, a[l], 1);
used[j][a[l]] = 1;
rudu[a[l]]++;
}
}
}
}//build graph
int tot = 0;
for(int i = 1; i <= n; i++)
if(rudu[i] == 0) start[++tot] = i;
for(int i = 1; i <= tot; i++)
answer = max(answer, SPFA(start[i]));
printf("%d",answer+1);
}
【luogu P1983 车站分级】 题解的更多相关文章
- 洛谷P1983车站分级题解
题目 这个题非常毒瘤,只要还是体现在其思维难度上,因为要停留的车站的等级一定要大于不停留的车站的等级,因此我们可以从不停留的车站向停留的车站进行连边,然后从入度为0的点即不停留的点全都入队,然后拓扑排 ...
- Luogu P1983 车站分级
(一周没写过随笔了) 这道题有坑! 看到题目,发现这么明显(??)的要求顺序,还有什么想法,拓扑! 将每条路范围内等级大于等于它的点(不能重复(坑点1))和它连一条边,注意起点终点都要有(坑点2),然 ...
- 洛谷P1983 车站分级
P1983 车站分级 297通过 1.1K提交 题目提供者该用户不存在 标签图论贪心NOIp普及组2013 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 求帮忙指出问题! 我这么和(diao ...
- 洛谷P1983车站分级
洛谷\(P1983\)车站分级(拓扑排序) 目录 题目描述 题目分析 思路分析 代码实现 题目描述 题目在洛谷\(P1983\)上 题目: 一条单向的铁路线上,依次有编号为 \(1, 2, -, ...
- 洛谷 P1983 车站分级
题目链接 https://www.luogu.org/problemnew/show/P1983 题目描述 一条单向的铁路线上,依次有编号为 1,2,…,n的 n个火车站.每个火车站都有一个级别,最低 ...
- P1983 车站分级[拓扑]
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n1,2,-,n的 nn个火车站.每个火车站都有一个级别,最低为 11 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟 ...
- 【洛谷P1983 车站分级】
这题好像是个蓝题.(不过也确实差不多QwQ)用到了拓扑排序的知识 我们看这些这车站,沿途停过的车站一定比未停的车站的级别高 所以,未停靠的车站向已经停靠的车站连一条边,入度为0的车站级别就看做1 然后 ...
- P1983车站分级
%%%rqy 传送 我们注意到题目中这段话: 既然大于等于x的站都要停,那么不停的站的级别是不是都小于x?(这里讨论在始发站和终点站以内的站(注意这里是个坑)) 我们可以找出每趟车没停的站,向所有停了 ...
- P1983 车站分级
题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
随机推荐
- Android进阶书籍推荐
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/124 Android进阶书籍推荐 端午节前我写了drake ...
- python 变量,输入,输出
目录 2.0 注释 2.1 变量 2.2 变量名命名规范 2.3 常量 2.4 输入 input 2.5 输出 print 2.6 关于开发工具 2.0 注释 python的注释方法 "&q ...
- ldap第二天-yum安装LDAP + phpLDAPadmin
1.安装LDAP服务器和客户端,migrationtools工具包 yum install -y openldap-servers openldap-clients migrationtools 2. ...
- 洛谷P2574 XOR的艺术
题目描述 \(AKN\)觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为\(n\)的\(01\)串. 2 ...
- 手动添加git 到 右键菜单
1.通过在“运行”中输入‘regedit’,打开注册表. 2.找到[HKEY_CLASSES_ROOT\Directory\Background]. 3.在[Background]下如果没有[shel ...
- Spring学习(一)IOC
Spring是一站式框架: (1)Spring在javaee三层结构中,每一层都提供不同的解决技术. web层:SpringMVC service层:Spring的Ioc dao层:Spring的J ...
- CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作
题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...
- 使用gulp构建工具
之前一个demo中用的是grunt,照着grunt用到的插件找了下gulp的,总体使用还算顺畅,说实话并不觉得学习成本有降低什么的,差不多.不过也遇到一些问题: 1.gulp.dest()输出目录需要 ...
- Hadoop实战:明星搜索指数统计,找出人气王
项目介绍 本项目我们使用明星搜索指数数据,分别统计出搜索指数最高的男明星和女明星. 数据集 明星搜索指数数据集,如下图所示.猛戳此链接下载数据集 思路分析 基于项目的需求,我们通过以下几步完成: 1. ...
- MapReduce的输入格式
1. InputFormat接口 InputFormat接口包含了两个抽象方法:getSplits()和creatRecordReader().InputFormat决定了Hadoop如何对文件进行分 ...