当前位置: 代码迷 >> 综合 >> HDU 2524 矩形A + B
  详细解决方案

HDU 2524 矩形A + B

热度:43   发布时间:2024-02-10 23:04:24.0

 

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

即  *  

其中 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;
}