2017.12.16【NOIP提高组】模拟赛B组

来源:互联网 发布:linux线程间通信方式 编辑:程序博客网 时间:2024/06/07 06:26

好久都没有写过题解了。


T1:dp。设首先把矩阵中的每一个点都存到一个队列里,然后根据美观度从小到大排序。设f[i]表示到第i个点的最长时间,显然f[i]是由前面美观度比i点小的点转移过来。进一步优化发现,只有从美观度既小于i点有最大的点转移过来才是最优的,这样就可以了。


T2:这题至今都不理解原理。做法是这样的:设f[i][j]表示i时刻到j位置的方案数,其中i<=m,j<=m/2。显然f[i+1][j+1]+=f[i][j],f[i+1][j-1]+=f[i][j]。求出范围内的f后,把f乘2(因为我们只考虑了往正方向走,没有考虑往负方向走)。然后把f[i*2][0](1<=i<=m/2)放入一个m/2*m/2的矩阵的第一行,接着把这个矩阵的(i,i-1)赋为1,最后把矩阵自乘n/2次,答案就是矩阵的(1,1)。