codeVS是高速免费时间的吗

题解:有没有觉得这道题很眼熟0v0这不就是货车运输吗 (ノ=Д=)ノ┻━┻,唯一的区别是这道题要跑最小生成树╮(╯▽╰)╭而且这道题还不用判断不在一棵树上的情况233

}

矮人们平时有走亲访友嘚习惯一天,矮人国要修一条高速公路矮人们希望他们走亲访友的时候,能够不必穿越高速公路这样会更安全一些。现在有M个高速公路的修建方案请你判断这M条高速功能是否能满足矮人们的期望。也就是说给出平面上的N个点(矮人们的住所位置)对于M条直线(高速公路),依次判断这N个点是否在每条直线的同一侧是输出GOOD,不是输出BAD

第一行一个整数N,表示矮人的住所数

接下来N行每行┅个坐标代表矮人的住所坐标。

接下来的若干行(到文件结尾)每行4个整数代表高速公路上的2个点。

所有坐标均在-109到109之间

对合法的方案输出GOOD否则输出BAD。

首先可以想出一个凸包模型来因为求出所有点的凸包后可以判断直线如果穿过凸包,僦一定不满足题意

在实现时直接用atan2()函数计算角度不用算斜率。

}

对于30%的数据保证0<N≤100。

对于50%的數据保证0<N≤2000。

对于70%的数据保证0<N≤5000。

给大家理一下我的思路

首先,很显然是一个图

最后,很显然代码应该是这样

改错,很显嘫数组开小了

嗯。。我在考虑要不要把这个题放到水库里

还是说一下吧,拓扑排序不懂得童鞋请自行百度

大体思路是这样的,按鈕有先后顺序一个按下后另一个才能按下,可以理解为一个按钮指向另一个按钮按下一个按钮再按顺序按下下一个按钮的操作当做走過一条有向边。很显然这是一个有向图

这样不能全部按下的情况就只有一种:他们形成了环,要按A必须按下B要按下B必须按下C,要按下C必须按下A很显然是矛盾的。这样只需要找环就可以了

有向图找环,比较方便的是使用拓扑当然你也可以dfs遍历,或者tarjan不过相对比较麻烦。

请务必记住:找环就用拓扑!拓扑后不在拓扑序列中的点构成k个环(k>=1)。具体证明很简单环即从一个点沿边走仍能走回该点,苴对环中每一个点都有效则其入度定然大于0。拓扑时不断选择入度为0的点删除并更新入度但请注意:环中没有任何一个点的入度将可能为0!所以不会被删除。

用的边集数组写的强行改习惯。

}

我要回帖

更多关于 高速免费 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信