2016.09.17【初中部 NOIP提高组 】模拟赛C

T1:这题直接用递归暴力就行了,比赛时我因为一个换行符的问题只有20多分......


T2:这题用dp。设f[i][1]表示i点选进集合里的集合个数,这则f[i][0]表示i点不选进集合的集合个数。f[i][1]=f[j[1]][0]*f[j[2]][0]...*f[j[n]][0],j表示i的儿子,n表示i的儿子的个数。f[i][0]=(f[j[1]][1]+f[j[1]][0])(f[j[2]][1]+f[j[2]][0])...(f[j[n]][1]+f[j[n]][0])。实现时用一个dfs从起点往下搜,如果没有儿子的话就两项都等于1,否则执行状态转移方程。


T3:这题我知道公式,怎么来的我就不知道了。设一个a数组和一个b数组。a[1]=1,b[1]=1。a[i]=b[i-1]+1;然后从从a[1]到a[i-1]找出一个最大的a[t],使得a[t]*k=n为止。如果a[i]=n,则输出lose。否则把n不停地减去比自己小的a[i],知道n=0为止,最后减去的a[i]就是ans。

你可能感兴趣的:(【初中部,NOIP提高组,】模拟赛C)