zoukankan      html  css  js  c++  java
  • 1523. K-inversions(K逆序对)

    1523

    这题应该说有一些DP的思想吧 dp[i][j]表示以i为结尾第j个数的个数 k单调下降 直接求的话肯定超时 然后用树状数组来进行维护

    求k-1次树状数组

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define lowbit(x) x&(-x)
     8 #define N 20010
     9 #define LL long long
    10 #define mod 1000000000
    11 int dp[N][12],n,a[N],po[N],sum[N][12];
    12 void add(int x,int k,int d)
    13 {
    14     while(x)
    15     {
    16         dp[x][k] = (d+dp[x][k])%mod;
    17         x-=lowbit(x);
    18     }
    19 }
    20 LL getsum(int x,int k)
    21 {
    22     LL s=0;
    23     while(x<=n)
    24     {
    25         s=(s+dp[x][k])%mod;
    26         x+=lowbit(x);
    27     }
    28     return s;
    29 }
    30 int main()
    31 {
    32     int i,j,k;
    33     scanf("%d%d",&n,&k);
    34     for(i = 1;i <= n ; i++)
    35     {
    36         scanf("%d",&a[i]);
    37         sum[a[i]][1] = 1;
    38     }
    39     LL s = 0;
    40     for(i = 2; i <= k ; i++)
    41     {
    42         for(j = i-1; j <= n ;j++)
    43         {
    44             add(a[j],i,sum[a[j]][i-1]);
    45             sum[a[j]][i] = getsum(a[j]+1,i);
    46         }
    47     }
    48     for(i = 1 ; i <= n ; i++)
    49     s = (s+sum[a[i]][k])%mod;
    50     printf("%lld
    ",s);
    51     return 0;
    52 }
    View Code
  • 相关阅读:
    log4j的使用
    关于spring读取配置文件的两种方式
    BeanUtils组件的使用
    javaee 自定义标签实战
    javaweb中的标签的核心标签库的常用标签
    对接口的思考
    二分查找
    java抽象类
    多例集合
    js中for循环的研究
  • 原文地址:https://www.cnblogs.com/shangyu/p/3348386.html
Copyright © 2011-2022 走看看