zoukankan      html  css  js  c++  java
  • bzoj2431 || 洛谷P1521 求逆序对

    考虑一下插⼊法
    n<=100n<=100
    f[i][j]f[i][j]表⽰11~ii的全排列有j个逆序对的⽅案数
    f[i][j]=Σf[i1][jk](0<=k<=i1)f[i][j]=Σf[i-1][j-k] (0<=k<=i-1)
    O(mn2)O(m*n^2)

    拓展:如果n<=1000n<=1000呢?

    n<=1000n<=1000?
    f[i][j]f[i][j]f[i1]f[i-1]中连续⼀段的和
    前缀和优化
    O(nm)O(n*m)

    下面上非拓展的代码:

    #include<cstdio>
    using namespace std;
    int f[105][6005];
    int main()
    {
    	int n,k;
    	scanf("%d%d",&n,&k);
    	f[1][0]=1;
    	f[2][0]=1;
    	f[2][1]=1;
    	f[0][0]=1;
    	for(int i=3;i<=n;i++)
    	{
    		for(int j=0;j<=k;j++)
    		{
    			for(int kk=0;kk<=i-1&&kk<=j;kk++)
    			{
    				f[i][j]+=f[i-1][j-kk]%10000;
    			}
    		}
    	}
    	printf("%d",f[n][k]%10000);
    	return 0;
    }
    
  • 相关阅读:
    springMVC静态资源
    MyBatis Generator
    使用springMVC时的web.xml配置文件
    Semaphore
    spring注解驱动--组件注册
    第1章 初始Docker容器
    docker面试整理
    第5章 运输层
    验证码
    带进度条的上传
  • 原文地址:https://www.cnblogs.com/vercont/p/10210092.html
Copyright © 2011-2022 走看看