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