题解 P1864 【[NOI2009]二叉查找树】

#include
#include
#include
#include
#include
#define rint register int
#define min(a,b) (a=w) 
          f[i][j][w]=min(f[i][j][w],f[i][k-1][a[k].y]+f[k+1][j][a[k].y]+a[j].z-a[i-1].z);
          //a[j].z-a[i-1].z:当树深加1,把每个访问频度都再加一次 
         f[i][j][w]=min(f[i][j][w],f[i][k-1][w]+f[k+1][j][w]+a[j].z-a[i-1].z+K);
       }
    printf("%d",f[1][n][1]);
    return 0;    
}

你可能感兴趣的:(题解 P1864 【[NOI2009]二叉查找树】)