今天考的不是很理想
估分:100+100+50+0=250
实际:100+30+60+0=190
第一题:
Fibonacci sequence |
矩阵乘法
f[0..3]表示第n个斐波那契的数,第n+1个数,前n个数的和,转移显然。
第二题:
Number |
二分
二分mid,在1~mid中容斥原理即可。然而考场因细节打挂了,而且没开long long。
第三题:
PermRLE |
状压dp。
设f[ S ][ i ][ j ]表示选数状态为S,每个块中开头选了第i个,结尾选第j个的最大能删的数的个数。
预处理出inside[ i ][ j ],表示每个块中第i个数与第j个数不相等的个数。
between[ i ][ j ]表示相邻两个块中前一个块的第i个与后一个块中第j个不相等的个数。
f[ S ][ i ][ j ]=max{ f[ S-(1<<j-1) ][ i ][ k ] +inside[ j ][ k ] }。
发现空间不够,我们可以将i那维压掉。
第四题:
TreeCount |
我们发现1到所有点的最短路径是构不成环的,如果一个连通图不能构成环,那么它一定是一棵树。因此题意可以转化为求1到任意点的最短路构成的树的种数,因此根据乘法原理,我们直接将1到每个点的最短路个数乘起来即可。
有待提高