这次比赛呵呵哒
T1
这道题当时用了递归,对了一个点......但到最后发现至少少了一个exit......正解是栈,其实我的做法也差不多,就是不停的把火车厢往“站”里放,如果栈顶是当前位,那就出栈;
T2
做题时一脸懵逼,而且越看越懵逼......听了讲题之后,我才知道这是一道水水的树形DP:用f[1,i]表示选第i个点的方案数,f[0,i]则反之,f[1,i]:=f[1,i]*f[0,j],f[0,i]:=f[0,i]*(f[0,j]+f[1,j]),因为如果选i,就不能选他的子节点,反之,则选不选都没关系;
T3
对这道题我只能表示无语,因为就算做对了,也不是很清楚原理,但思路还是懂的.....a表示一个分解n的数列,b表示从a中选若干个数,是每个数倍数都大于k,公式如下:
a[i]:=b[i-1]+1; 无法构造,所以只能新建一项表示;
if a[j]*k>a[i] then b[i]:=b[j]+a[i]else b[i]:=a[i]; 是每两个数倍数>k,如不能构造,则等于本身;
如果
a[i]>=n 退出循环
如果 a[i]=n 那么就是输了(lose)否则,从i-1开始,不停减去a[i-1]的值,能减就减,减到零时的a就是答案了;