zoukankan      html  css  js  c++  java
  • SSLZYC 逆序统计

    题目大意:
    求1到n这n个数中m个逆序对的方案总数。(答案取摸10000)


    思路:
    一道DP题。
    由于数据规模很大,所以要用滚动数组。
    我们可以发现这道题是有规律的。
    这道题有两个转移方程:

    (1)if (j<=i) f[i&1][j]=f[(i+1)&1][j]+f[i&1][j-1]

    (2)if (j>i) f[i&1][j]=f[(i+1)&1][j]+f[i&1][j-1]-f[(i+1)&1][j-i]


    附上代码:

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int f[2][5001],m,n;
    int main()
    {
        scanf("%d%d",&n,&m);
        f[0][0]=1;
        for (int i=1;i<=n;i++)
         for (int j=0;j<=m;j++)
         if(j>0) 
         {
            if (j<i) f[i&1][j]=(f[(i+1)&1][j]%10000+f[i&1][j-1]%10000)%10000;
            else f[i&1][j]=((f[(i+1)&1][j]%10000+f[i&1][j-1]%10000)%10000-f[(i+1)&1][j-i]%10000)%10000;  //转移方程,要取摸10000
         }
         else f[i&1][j]=f[(i+1)&1][j]%10000;
        f[n&1][m]=(f[n&1][m]+10000)%10000;
        printf("%d\n",f[n&1][m]);
        return 0;
    }
  • 相关阅读:
    springboot项目搭建
    linux之scp
    docker文件拷贝
    vue数据绑定不刷新可能情况
    css弹框
    jqgrid跨站脚本漏洞解决
    springboot配置文件加载顺序
    git之在eclipse上玩(一)
    windows系统日志位置
    maven
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313105.html
Copyright © 2011-2022 走看看