最后一个点过不了,求助QAQ

P3957 [NOIP2017 普及组] 跳房子

一直是90pts,大数据没过去,觉得是精度问题,但直接 define int long long 出现了 奇怪的现象.最后只将 f[] 改为 long long, 但还是90pts. 看了一篇40pts的代码,突然发现有个地方可以写得简洁一些 if (head == tail) f[i] = -INF; else f[i] = f[q[head]] + s[i]; 改为了 if (head < tail) f[i] = f[q[head]] + s[i]; 于是就过了?! 由于memset初始化过,所以这里是不用赋值的.按理来说写了也不会错, 但想起来 memset是根据数据类型填充,所以如果是long long,其值为0x3f3f3f3f3f3f3f3f 我这里只赋成了0x3f3f3f3f,所以就没了. 到最后居然真的是精度问题QAQ
by Skeleton_Huo @ 2022-07-18 20:18:11


|