NOIP模拟12
也算是最近几次比较水的一次吧。
考试时看T1像个打表找规律的题,扔了,去看T2,带修莫队??不会,完戏。看了T3,我决定还是去看T1。
看着T1,我突然发现T2是个大水题:主席树就行,不带修,修改时只需修改一棵主席树上的权值。不管了,先切了它。十分钟码完,40行,两个样例都是一边过。。。突然心里特别虚,于是我决定打个对拍,一拍就错(不要迷信样例,包括大的!)。
从头到结束半个小时T2就搞定了,然后我去推T1的式子,通过打表我们可以发现:一只兔子与其爸爸的差必然为斐波那契数列中的一项,那一项就是比这只兔子小的最大的一项。于是我们就可以二分出这一项,一直往上扫就可以得到答案。10^12大概到了59项,所以复杂度60*log60*m,好像有点玄(考后证明这样也能A)。。。。于是想到,可不可以类似倍增lca的思路(将每一个数唯一分解为若干2的k次幂之和),将每一个数唯一分解为若干斐波那契数之和,即可知道他们的爸爸与深度。然后就愉快的AC了这道题。
大概还有50min,去看T3,看了看,好像倒着扫就可以确保字典序最小,k=1直接硬判,k=2可以用并查集维护,但是没有想到在值域上求解。所以打了个在点上求解的,理论复杂度O(n^2)。
最后一看,T3炸了?输出ans->输出ans+1,分数12->40,把else放在另一个if里面,分数40->72,改了改扩展域并查集,分数72->84,
最后被玄学了:
1 printf("%d\n",ans); 2 int len=h.size(); 3 for(int i=len-1;i>=0;i--) 4 printf("%d ",h[i]);
wa84到死,不知怎么回事,后来改成了这样:
1 printf("%d\n",ans); 2 for(int i=ans-2;i>=0;i--) 3 printf("%d ",h[i]);
感觉没啥用,也没交,后来交了一下,A了?
T1A掉了,T2莫名其妙wa了,什么鬼,我拍了2个小时呢,发现颜色可以>n,改了之后,T了?
卡了卡常,A掉了。
感觉这次还行,至少三道题都是正解思路(除了T3在值域求解),但是因为种种原因炸成了100+75+12=187,rk4
没了