NOIP_2001.PJ1:数的计数 解题报告
刚看到题目被吓到了,下面有一个Hit(提示),说用高精度,高精度我以前写过一次,几乎忘干净了……后来琢磨了好久,发现能够使用动态规划,注意观察一下样例,输入是6,共有:
6
16
26
126
36
136
设f[i]是以自然数i在最左边的个数,那么很容易发现方程f[i] = f[1] + f[2][……]
刚看到题目被吓到了,下面有一个Hit(提示),说用高精度,高精度我以前写过一次,几乎忘干净了……后来琢磨了好久,发现能够使用动态规划,注意观察一下样例,输入是6,共有:
6
16
26
126
36
136
设f[i]是以自然数i在最左边的个数,那么很容易发现方程f[i] = f[1] + f[2][……]
哈,这题拿到手时刚开始不知道怎么开始,后来找到了突破点,用f[i][j]记录第i个字符串和第j个字符串重复的字符数,就是说把第i个字符串和第j个字符串之间接起来重合的字符数目。
把这个处理好了就好下手了,不过这里我忽略了两点,导致提交了几次。第一点f[i][j]中的i,j可以重复!也就是说自己可以接[……]
这个题目确实简单(我还是犯了一些比较低级的错误,提交了几次才AC),本来是想用一个链表来保存的,后来发现不需要专门去实现,因为毕竟题目里只有两种情况,即未知数的幂为0或1,用一个数组就可以了,int a[2][2]; 其中a[0]是保存左边的式子,a[1]保存右边的式子,a[x][0] 用来保存式子[……]
这个题目从一开始我就看错题了,我以为是要从输入的那个矩阵通过ABC三种方式变换到最初的矩阵(1,2,3,4,5,6,7,8),后来才知道是要从最初的矩阵通过变换到目标矩阵(即输入的)。不过看错提了我还是没做出来,就直接看了标称,标称里面的encode函数看了几次都没看懂,最后打算自己写一个encod[……]