到底算头天的还是当天的是个严重的问题。理论上说应该用睡觉作为两天的分界线啊。那万一今天我心情好不睡觉了怎么办。　a题是个简单的贪心,把阶乘拆成2,3,5,7的幂的乘积,然后按7532的顺序贪心。至于为啥是对的不知道。　b题是个简单的贪心,找有没有度数为1的点,然后一直这样连下去看能不能连完。至于为啥是对的不知道。　d题e题神题不会完全没思路放弃了。然后发现jcvb和xyz111都过了d,看代码像是虚树一样的玩意?没懂。明天去看题解。　很好想的dp。f[i][j]表示深度不超过i且大小为j的二叉树的个数。转移是f[i][j]　=　∑(f[i　-　1][k]　*　f[i　-　1][j　-　k　-　1])。　然后直接暴力是O(n　3　)的。在spoj上能过在bzoj上不能过。在bzoj上得用记忆化搜索来减掉一些无用的东西。虽然我觉得很烦。　然后试图用fft,发现fft比暴力还慢。然后试图用fnt,然后发现fnt好像不能对1e9+7这种质数用。因为1e9+6只有来一个2。真悲伤。我还是太弱啊。　#include　#include　#include　#include　　using　namespace　std;　const　int　maxn　=　609;const　int　mod　=　1000000007;　#define　_l　(long　long　int)　int　f[maxn][maxn];　int　getf(int　i,　int　j)　{　if　(i　==　0)　return　j　#include　#include　using　namespace　std;typedef　long　long　dint;#ifdef　WIN32#define　lld　"%I64d"#else#define　lld　"%lld"#endif#define　_l　(long　long　int)const　int　maxn　=　109;int　n,　a[maxn],　b[maxn],　c[maxn],　t;dint　s;bool　hasZero()　{　for　(int　i　=　0;　i　=　0　&&　j　>　i)　&　1)　{　swap(b[k],　b[j]);　break;　}　if　((b[j]　>>　i)　&　1)　{　for　(int　k　=　j　+　1;　k　>　i)　&　1)　{