zoukankan      html  css  js  c++  java
  • P1350 车的放置

    P1350 车的放置

    设$f[i][j]$为当前推到第$i$列,该列高度$h$,已经放了$j$个车的方案数

    则$f[i][j]=f[i-1][j]+f[i-1][j-1]*(h-j+1)$

    但是我们发现从左往右递推的话因为突然少掉一块,所以无法正常进行

    那么从右往左就行了鸭!

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define re register
     5 using namespace std;
     6 #define N 2002
     7 const int mod=1e5+3;
     8 int f[N][N],a,b,c,d,k;
     9 int main(){
    10     scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
    11     for(int i=0;i<=a+c;++i) f[i][0]=1;
    12     for(int i=1;i<=c;++i)//从右向左
    13         for(int j=1;j<=k;++j)
    14             f[i][j]=(f[i-1][j]+f[i-1][j-1]*(d-j+1))%mod;
    15     for(int i=c+1;i<=a+c;++i)
    16         for(int j=1;j<=k;++j)
    17             f[i][j]=(f[i-1][j]+f[i-1][j-1]*(b+d-j+1))%mod;
    18     printf("%d",f[a+c][k]);
    19 }
    View Code
  • 相关阅读:
    Java修饰符大汇总
    死锁
    线程的几种可用状态
    重载与覆盖(重写)
    Git
    JS跨域
    Spring中的Bean
    ZooKeeper
    Mysql(2)
    Maven
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/9904301.html
Copyright © 2011-2022 走看看