F - 分割草坪
首先可以用区间
d
p
dp
dp 的方式,对于
d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j] 的求解,我们只要以
i
i
i,
j
j
j 为底边,枚举顶点
k
(
i
<
k
<
j
)
k(i<k<j)
k(i<k<j) ,划分出三角形
(
i
,
j
,
k
)
(i,j,k)
(i,j,k) ,然后我们就将要求的值分为
d
p
[
i
]
[
k
]
+
d
p
[
k
]
[
j
]
+
dp[i][k]+dp[k][j]+
dp[i][k]+dp[k][j]+ 三角形
(
i
,
j
,
k
)
(i,j,k)
(i,j,k) 的花费,找到花费最小的值就可以了。
之后可以发现,所有的三角形都有一个顶点为
1
1
1 的方案显然是最优的,推导一下公式就可以得出答案
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
signed main()
{
int n;cin>>n;
LL res=0;
for(int i=3;i<=n;i++)
res+=i*(i-1);
cout<<res;
return 0;
}