车站分级 (2013noip普及组T4)(树形DP)
题目描述
一条单向的铁路线上,依次有编号为 1,2,…,n 的 n个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x ,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)
例如,下表是 5 趟车次的运行情况。其中,前 4 趟车次均满足要求,而第 5 趟车次由于停靠了 3 号火车站( 2 级)却未停靠途经的 6 号火车站(亦为 2 级)而不满足要求。

现有 m 趟车次的运行情况(全部满足要求),试推算这 n 个火车站至少分为几个不同的级别。
输入输出格式
输入格式:
第一行包含 2 个正整数 n,m,用一个空格隔开。
第 i+1 行 (1≤i≤m) 中,首先是一个正整数 si(2≤si≤n) ,表示第 i 趟车次有 si 个停靠站;接下来有 si 个正整数,表示所有停靠站的编号,从小到大排列。每两个数之间用一个空格隔开。输入保证所有的车次都满足要求。
输出格式:
一个正整数,即 n个火车站最少划分的级别数。
思路:
这么多巨佬在上,我这个蒟蒻也只能来一发树形DP了(其实好像是森林DP因为我懒得建超级根节点了)
很多大佬都用了拓扑排序,这是个好思想,但我太弱了不会用
我的这个树形DP的连边和很多大佬很像,每一条线路分别处理
如果某个点在起点到终点范围内,且没有停靠,由题意可知,这几站一定比停靠站的等级低,我就从停靠的站向不停靠的站连边,表示大小关系,当然,我不连重边
然后我开始遍历一遍所有的点,如果这个点没有入边,就说明它可能是最大的,我从这个点跑树形DP,每上升一层,大小+1,我们用动规找到最大层数,就是这个根点的答案
当然,我要求的是全图层数,当然要写一个max来比较了。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#define rii register int i
#define rij register int j
using namespace std;
struct cz{
int rd,cd,to[];
}x[];
int n,bj[],ans,tk[],bs,kkk,ltt,m,gh[][],as[],sf[];
void jb(int bh)
{
x[bh].rd+=ltt;
for(rii=;i<=ltt;i++)
{
if(gh[bh][tk[i]]==)
{
bs++;
x[tk[i]].cd++;
x[tk[i]].to[x[tk[i]].cd]=bh;
gh[bh][tk[i]]=;
}
}
}
void dplast(int wz)
{
for(rii=;i<=x[wz].cd;i++)
{
if(sf[x[wz].to[i]]==)
{
dplast(x[wz].to[i]);
sf[x[wz].to[i]]=;
}
as[wz]=max(as[wz],as[x[wz].to[i]]+);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(rii=;i<=m;i++)
{
int st,fi;
memset(bj,,sizeof(bj));
scanf("%d",<t);
for(rij=;j<=ltt;j++)
{
scanf("%d",&kkk);
tk[j]=kkk;
bj[kkk]=;
if(j==)
{
st=kkk;
}
if(j==ltt)
{
fi=kkk;
}
}
for(rij=st+;j<fi;j++)//建边
{
if(bj[j]==)
{
jb(j);
}
}
}
for(rii=;i<=n;i++)
{
if(x[i].cd==)//初始化,如果是叶子节点,就不需要向下寻找,层数默认是1
{
as[i]=;
sf[i]=;
}
}
int maxn=;
for(rii=;i<=n;i++)
{
if(x[i].rd==)
{
dplast(i);
}
}
for(rii=;i<=n;i++)
{
maxn=max(maxn,as[i]);
}
cout<<maxn;
}
车站分级 (2013noip普及组T4)(树形DP)的更多相关文章
- Day1:T3 bfs T4 树形DP
T3:BFS 回看了一下Day1的T3...感觉裸裸的BFS,自己当时居然没有看出来... 同时用上升和下降两种状态bfs即可 这一题还要注意一个细节的地方,就是题目要求的是求往返的最优解 k=min ...
- NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)
题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每 ...
- NOIP 2014 普及组 T4 子矩阵
[题意] 已知:n,m,r,c,a[i][j] (1 ≤ n ≤ 16, 1 ≤ m ≤ 16,1 ≤ a[i][j] ≤1000,1 ≤ r ≤ n, 1 ≤ c ≤ m) 条件:矩阵的分值定义为每 ...
- 洛谷P3957 跳房子(Noip2017普及组 T4)
今天我们的考试就考到了这道题,在考场上就压根没有思路,我知道它是一道dp的题,但因为太弱还是写不出来. 下来评讲的时候知道了一些思路,是dp加上二分查找的方式,还能够用单调队列优化. 但看了网上的许多 ...
- NOIP2015普及组T4推销员(暴力+线段树)
题目:阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为Si米.由于同一栋房子里 ...
- NOIP2010普及组T4 三国游戏——S.B.S.
题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...
- noip2017爆炸记——题解&总结&反省(普及组+提高组)
相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高 ...
- NOIP2008普及组 题解 -SilverN
T1 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符( ...
- NOIP2008普及组题解
NOIP2008普及组题解 从我在其他站的博客直接搬过来的 posted @ 2016-04-16 01:11 然后我又搬回博客园了233333 posted @ 2016-06-05 19:19 T ...
随机推荐
- IntelliJ IDEA 2017.2 下载和破解方法
一.IntelliJ IDEA 2017 下载地址 http://www.jetbrains.com/idea/#chooseYourEdition 要下载付费版的,免费版的很多功能不能用 二.破解 ...
- mogondb简介
MongoDB是一款强大.灵活,且易扩展的通用型数据库,其包含以下设计特点 1.1易于使用 与关系型数据库不同的是,它没有table/rows/records,相反采用更为灵活的文档(document ...
- Spring Cloud Ribbon负载均衡配置类放在Spring boot主类同级增加Exclude过滤后报Field config in com.cloud.web.controller.RibbonConfiguration required a bean of type 'com.netflix.client.config.IClientConfig' that could not b
环境: Spring Cloud:Finchley.M8 Spring Boot:2.0.0.RELEASE 目录结构: 可以看到代码第13行的注释,我已经在@ComponentScan注解中添加了E ...
- 靠谱的div引入任何外链内容
靠谱的div引入任何外链内容 开发中经常要在div中引入一个页面,该页面可能是内部页面,可能是一个外部页面,也可能只是一个域名获取的请求. 对于内部页面的加载,建议使用jquery的load函数,如: ...
- 检测IE浏览器兼容Edge模式及IE11
document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1) 判断布尔值
- .NET开源工作流RoadFlow-表单设计-子表
子表即明细表 从表:与主表对应在子表. 从表主键:从表的主键. 主表字段:主表中与从来关联的字段,一般为主表的主键. 与主表关联字段:从表中与主表关联的字段. 选择之后即可在下面从表字段列表中设置每个 ...
- CentOS安装QQ2012
QQ想必大家都会用,在windows系统下一般都是使用客户端软件,但是在linxu系统下就没有想windows那样的客户端了.下面就次啊用wine在CentOS中安装腾讯QQ2012.
- 在Android Studio上进行OpenCV 3.1开发环境配置
开发环境: Windows 7 x 64 家庭版 Android Studio 1.5.1(Gradle版本2.8) JDK 1.8.0 Android 6.0(API 23) OpenCV 3.1. ...
- mybooklist.cn 书单de故事六月十六日
1.我的30年30本书 刘苏里书单北京万圣书园总经理,以经营人文社科类图书著称.生于1960年,1983年毕业于北京大学国际政治系,1986年毕业于中国政法大学研究生院.
- 【NLP_Stanford课堂】分词
一.如何定义一个单词 在统计一句话有多少个单词的时候,首要问题是如何定义一个单词,通常有三种情况: 是否认为句中的停顿词比如Uh是一个单词,我们称之为fragment,或者filled pause. ...