zoukankan      html  css  js  c++  java
  • codeforce 597C-Subsequences(dp+树状数组)

    题目和南阳那道题一样链接http://www.cnblogs.com/zzuli2sjy/p/4943774.html

    代码:

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 #include<iostream>
     6 #include<map>
     7 typedef long long ll;
     8 const ll N=1e5+5;
     9 ll dp[20][N];
    10 ll a[N];
    11 ll bit[N];
    12 int  found(int  n,int  m,ll k);
    13 ll sum(int i);
    14 void add(int i,ll x,int t);
    15 using namespace std;
    16 int main(void)
    17 {
    18     ll i,j,k,p,q;
    19     while(scanf("%I64d %I64d",&k,&p)!=EOF)
    20     {
    21         memset(dp,0,sizeof(dp));
    22         memset(bit,0,sizeof(bit));
    23         for(i=0; i<k; i++)
    24         {
    25             scanf("%I64d",&a[i]);
    26         }int cnt=k;
    27         for(i=0; i<k; i++)
    28         {
    29             dp[1][i]=1;
    30         }
    31         for(i=2; i<=p+1; i++)
    32         {
    33             memset(bit,0,sizeof(bit));
    34             for(j=i-2; j<k; j++)
    35             {
    36                 dp[i][j]=sum(a[j]-1);
    37                 add(a[j],dp[i-1][j],cnt);
    38             }
    39 
    40         }
    41         ll sum=0;
    42         for(i=0; i<k; i++)
    43         {
    44             sum+=dp[p+1][i];
    45 
    46         }
    47         printf("%I64d
    ",sum);
    48     }
    49     return 0;
    50 }
    51 ll sum(int i)
    52 {
    53     ll s=0;
    54     while(i>0)
    55     {
    56         s+=bit[i];
    57         i-=(i&-i);
    58     }
    59     return s;
    60 }
    61 
    62 void add(int i,ll x,int t)
    63 {
    64     while(i<=t)
    65     {
    66         bit[i]+=x;
    67         i+=(i&-i);
    68     }
    69 }
    油!油!you@
  • 相关阅读:
    try....exception....finally
    Django的信号机制详解
    python 单例模式
    python raise assert
    python type metaclass
    python 类特殊成员
    python 道生一,一生二,二生三,三生万物
    C#DES加密
    C#AES加密
    C# MD5加密
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/4977232.html
Copyright © 2011-2022 走看看