题型
- 单选 10道
- 编程 4道
- 问答 2道
单选
单选涉及到的几个部分有:
- c++语言特性,面向对象主要还是继承和虚函数
- 操作系统,考了生产者消费者对信号量的处理以及对进程的挂起和唤醒逻辑
- 图论,考了一道无向连通图的特点,还有一道BST相关的时间复杂度问题
- 程序阅读
编程
1.城市封锁
- 输入城市数量n、消息数量m、目标城市f,以及n行消息,每条消息有两个整数,x和y,代表城市x和y之间的道路已经封闭,如果x为0,则代表城市y已经封城
- 输出一个整数,代表第几条消息过后可以得出目标城市已封城的结论,无法得出则输出0
- 思路:判断一个城市被封城,要么宣布f封城,要么f与其他城市的道路全部阻断,可以设置一个set代表f与某一城市的道路是否被封闭。
对于每一行消息输入,如果x==0 && y==f
直接输出消息计数,其他情况没如果道路的一头是f,且另一头不在set中,就把f的道路计数-1,并更新set,若f的道路计数为0,则输出消息计数。
2.感染者人数
假定一个城市有n个人,会举办m场聚会,一个病人的编号是f,试问举办过m场聚会后城市的感染者人数,假定只要聚会中只要有一个人是感染者,