题解 P1350 【车的放置】
..... .. 额,这个就是dp啊;
思路和p1240 是很像的;
我先把这个图像左右反转一下,这样方便dp
f[j][i]代表前j列放i个的方案;
v[j]代表第j列的高度;
f[j][i]=(f[j-1][i]+f[j-1][i-1]*(v[j]-i+1))%mo;
答案就是f[a+c][m]
... 没了啊
#include<bits/stdc++.h>
using namespace std;
const int N=2e3+5;
int f[N][N],v[N];
int a,b,c,d,m,ans,mo=100003;
int main()
{
scanf("%d%d%d%d%d",&a,&b,&c,&d,&m);
for(int i=1;i<=c;i++)v[i]=d,f[i][0]=1;
for(int i=1;i<=a;i++)v[c+i]=d+b,f[c+i][0]=1;
f[0][0]=1;
for(int j=1;j<=a+c;j++)
for(int i=1;i<=m;i++)
f[j][i]=(f[j-1][i]+f[j-1][i-1]*(v[j]-i+1))%mo;
printf("%d",f[a+c][m]);
}