codeforces Round#503(div 2)

D、The hat

题意:有2n个学生围成一圈坐着,相邻的两个学生拿到的数字相差1或者-1,让你通过询问,得到那两个学生手里的数字相等。

分析:

 

E、Sergey's problem

题意:给一颗有向树,选出一些顶点集合,使得所有的点在两步之内可达,且两个相邻的点最多选择一个。

分析:一开始我一直在考虑是不是要从入度为0的节点开始,但是遇到复杂的图时,例如环。或者这个图都是一个环,这时候就不好处理了。看了题解,考虑的很巧妙,根据箭头出入点的大小,把图分成正向和反向两部分进行处理,一开始处理正向图(小指向大),顶点从小到大进行遍历,如果这个节点没有被访问过,则标记它指向的正向图中的点。这一步保证了正向图中的点只走一步就能访问到。接下来考虑反向图中,从大到小进行遍历,如果点没有被标记,则加入到结果中,并把它能访问到的点都标记一下。这样被标记的点最多两步可达。要么从结果中的点直接可达,要么是结果中的点到这个点的父节点(比它大的点)可达。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值