NOIP2008提高组 解题报告
少说多做- -||
稍加优化:我们可以考虑使得第一条线路和第二条线路走的步数相同,这样就可以减少一维。由于x+y=step+2,因此如果记录了第一条线路的行坐标x1,和第二条线路的x2,则第一条线路的列坐标就为step+2-x1,第二条的为step+2-x2,转移同理还是从那四个位置过来。空间和时间都降到O(n^3)。
1.笨小猴
送分,略……1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
2.火柴棒等式
题目火柴棒的数量n最大等于24,扣掉加号、等号只剩下20根。20根显然不可能有五位数(最好情况都是1,但即使如此组成的等式不成立,11111+1=1111)。而如果组成了一个四位数加数,则另一个加数必定<=11。其他情况最多A,B都是3位数。 因此可以先预处理算出组成x(x<10000)需要多少根火柴棒,然后枚举加数A和B。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
3.传纸条
题目相当于,找两条从(1,1)到(n,m)的不相交的线路,使得这两条线路经过的个子上的数值之和最大。 朴素做法:四维动归,f[x1,y1,x2,y2]表示第一条线路走到(x1,y1),第二条线路走到(x2,y2),显然转移只能从f[x1-1,y1,x2-1,y2],f[x1-1,y1,x2,y2-1],f[x1,y1-1,x2-1,y2],f[x1,y1-1,x2,y2-1]里面寻找最大值。 为了避免两条线路相交,因此特殊处理交点的情况,也就是(x1=x2)and(y1=y2)and(x1<>n)and(y1<>m)的情况,此时f[x1,y1,x1,y1]=-∞。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
4.双栈排序
可以发现,如果存在k满足a[k]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
|