前言:
这次比赛感觉有点难以置信。我总分不到50分,居然进了前30?估计是题目难度要大一些,所以得分都不高。
题目:
T0:
这题比赛的时候我居然没有想到正解?我果然还是太弱了。比赛后听RZC奆和LZC奆讲了以后秒AC,数学方法YYDS。
正解:
这道题用数学方法很简单。因为我们想要让病毒以最快的速度扩散,那么肯定是要让病毒先翻倍再去别的农场来得快。因为如果你先翻倍的话,就不用让一个病毒回去了,直接移动就好了。而让它但是呢,光先扩散还是没有用滴。还要让它不返回。只有不会返回了,才会在最短的时间内扩散完成(话说我们为什么要让病毒在最短的时间内扩散)。
那么,我们是不是只需要算出翻倍需要的时间,然后加上走路需要的时间就能完成了呢?
因为,需要进行2^x次方才能够超过当前的连接它的节点的数量(也就是连向当前这个节点的数量),所以我们可以用log2来轻松的算出x。但是呢,算的时候要向上取整。Why?因为如果刚好等于可不行,等于的话原来的这个节点就没有病毒奶牛“看守”了,所以要向上取整。不过呢,第一个节点的初始值要设为1。Why?因为你初始的节点需要一头病毒奶牛“看守”所以要默认为1。那么,我们是不是用一个变量来累加x就行了呢?
NO!
因为,如果你只累加x,那就大错特错了,因为,还要把走路的时间给加上。你可能要问了,我们怎么知道它走过的路是多少呢?你直接用log2求出答案了啊。很简单,最短的路程不就是n-1吗(只跑一遍)?所以我们只需要把累加的ans+=n-1就OK了。然后你就能够痛快的AC了。
应得:
6.7
实得:
6.7
当前得分:
100
状态:
已AC
T1:
比赛时懵逼,不提。打表骗了5分(汗)。
应得:
5
实得:
5
当前得分:
5
状态:
在改
T2:
比赛时想到了方法,可是在实现的时候调了半天,最后打了个表,骗了10分。
应得:
10
实得:
10
当前得分:
10;
状态:
在改
T3:
完全懵逼(话说金牌的题目是C组的水平的吗……),打了个表,骗了15分。
应得:
15
实得:
15
当前得分:
15
状态:
在改
最后:
这次比赛又惊又喜,加油!