这次来福州冬令营集训,一开始就来了个开门红,第一次考试就爆了零,T1“*”了,T2“M”了,T3放弃,骗分还骗错了,真是蠢物啊。
分析一下吧
T1题意是明了的:给定编译一次所需的时间R以及添加一个printf语句的P。在N行代码中,有且仅有一个病句。在编译的过程中,运行到病句处时,程序停止,不执行病句及以下的的语句。求在最坏的情况下找到病句所需的最少时间。
接下来要做的就是分析怎么放置printf语句,编译几次,才能使所需的时间最短。先分析将p-放置在代码zhong
中间,这时,将代码分为n/2和⌈n/2⌉两部分,花费的时间是R+P,若是每次都在中间放入p-,那么时间总共是log2(n)*(R+P),直至将代码分为小于等于2的部分,但是如果将代码分为三段,即用两个p-,那么是用了R+2P的时间,如果分成s段,那么时间就是R+sP,再与对半分而言,分为多端的方法所用的时间更短,是更优的解法。