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;
    }
    
  • 相关阅读:
    蜂窝网格的坐标以及寻路
    unity3d 第三人称视角的人物移动以及相机控制
    基本HTML结构
    平衡二叉树
    STL基础复习
    递归
    unity 傅老师学习
    blender基础操作
    最小生成树
    最短路径
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/10834335.html
Copyright © 2011-2022 走看看