Luogu P1983 车站分级
(一周没写过随笔了)
这道题有坑!
看到题目,发现这么明显(??)的要求顺序,还有什么想法,拓扑!
将每条路范围内等级大于等于它的点(不能重复(坑点1))和它连一条边,注意起点终点都要有(坑点2),然后拓扑求解即可。
BFS的拓扑感觉更好。
然后打了个map判重交上去帅气的TLE了3个点
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<map>
using namespace std;
const int N=;
vector <int> a[N];
map <int,bool> ma[N];
int n,i,m,j,q[N*+],head,tail,s[N],x,k,ru[N],bs[N],ans;
bool f[N];
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
int main()
{
read(n); read(m);
for (i=;i<=m;++i)
{
memset(f,,sizeof(f));
read(s[]);
for (j=;j<=s[];++j)
read(s[j]),f[s[j]]=;
for (j=s[]+;j<=s[s[]];++j)
if (!f[j])
for (k=;k<=s[];++k)
if (!ma[s[k]][j]) a[s[k]].push_back(j),ru[j]++,ma[s[k]][j]=;
}
for (i=;i<=n;++i)
if (!ru[i]) q[++tail]=i,bs[i]=;
while (head<tail)
{
int now=q[++head];
for (i=;i<a[now].size();++i)
{
int k=a[now][i];
bs[k]=bs[now]+;
ans=max(ans,bs[k]);
if (!(--ru[k])) q[++tail]=k;
}
}
printf("%d",ans);
return ;
}
然后一想,N<=1000至于用map么。然后直接二维数组判断,然后过了。。。
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
using namespace std;
const int N=;
vector <int> a[N];
int n,i,m,j,q[N*+],head,tail,s[N],x,k,ru[N],bs[N],ans;
bool f[N],p[N][N];
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
int main()
{
read(n); read(m);
for (i=;i<=m;++i)
{
memset(f,,sizeof(f));
read(s[]);
for (j=;j<=s[];++j)
read(s[j]),f[s[j]]=;
for (j=s[];j<=s[s[]];++j)
if (!f[j])
for (k=;k<=s[];++k)
if (!p[s[k]][j]) a[s[k]].push_back(j),ru[j]++,p[s[k]][j]=;
}
for (i=;i<=n;++i)
if (!ru[i]) q[++tail]=i,bs[i]=;
while (head<tail)
{
int now=q[++head];
for (i=;i<a[now].size();++i)
{
int k=a[now][i];
bs[k]=bs[now]+;
ans=max(ans,bs[k]);
if (!(--ru[k])) q[++tail]=k;
}
}
printf("%d",ans);
return ;
}
一道坑题!
Luogu P1983 车站分级的更多相关文章
- 【luogu P1983 车站分级】 题解
题目链接:https://www.luogu.org/problemnew/show/P1983 符合了NOIP命题的特点,知识点不难,思维量是有的. step1:把题读进去,理解.得到 非停靠点的等 ...
- 洛谷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车站分级题解
题目 这个题非常毒瘤,只要还是体现在其思维难度上,因为要停留的车站的等级一定要大于不停留的车站的等级,因此我们可以从不停留的车站向停留的车站进行连边,然后从入度为0的点即不停留的点全都入队,然后拓扑排 ...
- P1983 车站分级[拓扑]
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n1,2,-,n的 nn个火车站.每个火车站都有一个级别,最低为 11 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟 ...
- 【洛谷P1983 车站分级】
这题好像是个蓝题.(不过也确实差不多QwQ)用到了拓扑排序的知识 我们看这些这车站,沿途停过的车站一定比未停的车站的级别高 所以,未停靠的车站向已经停靠的车站连一条边,入度为0的车站级别就看做1 然后 ...
- P1983车站分级
%%%rqy 传送 我们注意到题目中这段话: 既然大于等于x的站都要停,那么不停的站的级别是不是都小于x?(这里讨论在始发站和终点站以内的站(注意这里是个坑)) 我们可以找出每趟车没停的站,向所有停了 ...
- P1983 车站分级
题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
随机推荐
- python的函数(三)
1,函数多类型传值和冗余参数 2,递归函数 1,函数多类型传值和冗余参数 1.0,函数多类型传值 定义1个函数, def fun(x,y): return x+y 调用该函数print fun(1,2 ...
- windows下搭建Consul分布式系统和集群
随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.我们在一个项目上注册了很多服务,在进行运维时,需要时 ...
- python selenium爬取自如租房数据保存到TXT文件
# -*- coding: utf-8 -*-"""Created on Fri Aug 31 2018 @author: chenlinlab"" ...
- Linux系统之TroubleShooting(启动故障排除)
尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题.那么这篇博文就总结一下一些常见的故障排除方法,但是不可能 ...
- python基础学习4----元组
元组又叫只读列表,不可以修改其内容 1.创建元组 tuple1=(1,3,2,4,5) tuple2=()#空元组 tuple3=('a',) #元组中只有一个元素时要在元素后面加上逗号,否则会被当成 ...
- English Phonetic Spelling Alphabet
https://www.englishclub.com/vocabulary/english-phonetic-spelling.htm When speaking on the telephone ...
- Docker 使用入门,创建一个Nginx服务器
运行环境: MAC Docker 版本: Docker version 17.12.0-ce, build c97c6d6 一.启动Nginx 服务器 启动Nginx 服务器,并进入模拟终端 dock ...
- Xmind在win10更改用户设置后出现Invalid Configuration Location 错误的解决办法
错误原因: 因为一开始新建win10用户时,使用的是中文用户名,导致了部分软件比如IDEA读取C盘中配置文件时报错.我用管理员权限修改用户姓名为英文后,IDEA的问题虽然已经解决,但Xmind却报出了 ...
- Django商城项目笔记No.2项目准备工作
Django商城项目笔记No.2项目准备工作 接着上篇开始,创建好工程之后,随之而来的是怎么配置工程,这篇文章记录如何进行相关的配置 1.pycharm打开工程,进行相关的配置 通过pycharm打开 ...
- 以太坊预言机与WEB API(原创,转载请说明原址)
什么是预言机? 从链外获得数据,提供区块链与现实世界事件之间的连接,提供外部信息的平台 预言机自身也是一种智能合约,它允许区块链连接到任何现有的API 是这个预言机去调用各种 WEB API的接口 这 ...