NOIP四校联训Round7小结

这次考试思路好点了,就是实现上面有偏差,导致最后结果不好。时间也有点匆忙,因为难度比较大。
第一题就有一些难度。一开始想了个O(nm)的40分算法,最后是11:20倒回来想的,想了个O(p^2logp)的算法觉得差不多了没仔细继续想,其实是有O(p^2)的算法的。跑去写第二题的线段树了。得了80.
第二题线段树一开始也没想到,写的O(n^2)的60分算法。时间不多了我去想第三题了,结果发现第三题是一个神题结果倒回来想这两个题。
第二题线段树是写对了,可惜也令我觉得要认真对待的是我把求区间内第k个空位,这个k算错了。只得了30。换了cal函数后A了。
正解:

inline int cal(int x,int y)
{
    return min(x+1,y-x+1);
}

我的写法:

inline int cal(int x,int y)
{
    if(x==y)return 1;
    if(x>(y+1)/2)return cal(y-x,y);
    return x+1;
}

当y为奇数,x为y/2上取整的时候,两个函数返回值不同。
其实我也不知道我当时是怎么想的。
可能我的思维比较偏向于找规律推式子,而不是依据真实情况写式子。而找的规律并不能涵盖所有情况,因此有问题。
第三题神题,其实我知道是树同构但是我只是知道这个问题而不知道怎么做。。。
我先想写的,思路是判断两棵子树是否相等。结果写到一半写不下去了,然后写了前两题后,我想写第三题O(n!)的算法,结果最后没时间了。。忙中出错,输出NO的时候有个注释忘消除了。结果就没骗到分。

思维有了,就是比较慢,导致后面没时间了。
然后代码实现,一定注意这些自己推的东西的检查。有的题要找规律,有的还是要依据实际写。依据不了实际情况,再找规律,不要直接找规律,这个有问题。

你可能感兴趣的:(NOIP四校联训Round7小结)