HDU 2524 矩形A + B

HDU 2524 矩形A + B_第1张图片 

高中数学:横行选择两条直线,竖行选这两条直线

即 C_{n}^{2} *  C_{m}^{2}

其中 n ,m 为水平线与竖直线

const int N=100+5;
 
    int n,m,t;
    int i,j,k;
    int a[N];
    int dp[N][N];

int main()
{
    //IOS;
    rush(){
        sdd(n,m);
        n++,m++;
        pd(n*(n-1)/2*m*(m-1)/2);
    }
    //PAUSE;
    return 0;
}

如果非要和 DP 扯上关系,还是从直线出发

dp[i]:表示长度为 i 的直线能够组成多少有用的线段

 长度为 i+1 的直线在长度为 i 的直线上面贡献了 i+1 条,长度分别为 1~i+1

所以 dp[i+1]=dp[i]+i+1

这样假设水平线长度为 n ,竖直线长度为 m

长度为 n 的直线的每一个线段都可以与长度为 m 的每一条线段产生贡献 

他们的状态分别为 dp[n] , dp[m]

const int N=100+5;
 
    int n,m,t;
    int i,j,k;
    int a[N];
    int dp[N];

int main()
{
    //IOS;
    for(i=1;i<=100;i++){
        dp[i]=dp[i-1]+i;
    }
    rush(){
        sdd(n,m);
        pd(dp[n]*dp[m]);
    }
    //PAUSE;
    return 0;
}

 

 

你可能感兴趣的:(#,动态规划,HDU)