2020.11.16考试学习笔记

第一题:hospital

n=100 乱搞随便过,不消说的。

第二题:age

根据题目里面所说的,有许多间谍可以被买通,意志不坚定,所以可以用is_buy数组表示哪些间谍可以被买通。
根据该题性质,正解应该是tarjan缩点写法,在成环的间谍网络中找到代价最小的那个间谍,然后再去操作。
但是,我的写法更精妙,这题数据太水,所以我们可以乱搞暴力搞过去。
先找到每个点是否有入度,如果说没有入度而且不能被收买,那这个人出大问题,就没有任何一个方案可以到达他那里,这就是No情况的输出方法。
扫描只需要O(n),但是其实正确性极低,因为如果其情报路线成一个环且环中没有人可以被收买的话,那么No操作就错误了。(可是这垃圾数据没有这种东西)
但是如果该点没有入度但是可以被买到,那该人一定要买,不然就无法遍历到他,所以一定要买,然后跑一边深度优先搜索,把所有该点可以搞到的间谍都搞掉。(这个东西优化了大量的时间复杂度)
同时,上面操作的时间复杂度是玄学,因为根本无法算到底有多少人会被逮捕。
然后,就开始暴力枚举每一种其他的情况,时间复杂度玄学,但是喝杯茶功夫就跑过去了,虽然没有tarjan快,但是这玩意他向总喜欢好写啊。

第三题:machine

碰到0就不存,不碰到0就存起来,然后跑一边二分图最大匹配,匈牙利算法。

第四题:speed

dijstra+分层图 喝口茶就过了。
(听说某人用随机化乱搞打了50分)

posted @ 2020-11-16 18:13  Kamiya-Kina  阅读(90)  评论(1编辑  收藏  举报