树状数组+dp(不太懂) Codeforces 597C

原创 2015年11月20日 19:01:25
C. Subsequences
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

For the given sequence with n different elements find the number of increasing subsequences with k + 1 elements. It is guaranteed that the answer is not greater than 8·1018.

Input

First line contain two integer values n and k (1 ≤ n ≤ 105, 0 ≤ k ≤ 10) — the length of sequence and the number of elements in increasing subsequences.

Next n lines contains one integer ai (1 ≤ ai ≤ n) each — elements of sequence. All values ai are different.

Output

Print one integer — the answer to the problem.

Sample test(s)
input
5 2
1
2
3
5
4
output
7

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long n;
long long dp[12][100010];
long long query(long long x,long long i)
{
    long long ans=0;
    while(i>0)
    {
        ans+=dp[x][i];
        i-=i&-i;
    }
    return ans;
}
void update(long long x,long long i,long long num)
{
    while(i<=n)
    {
        dp[x][i]+=num;
        i+=i&-i;
    }
    return ;
}
int   main()
{
    long long  k;
    while(scanf("%lld%lld",&n,&k)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        for(long long  i=0; i<n; i++)
        {
            long long  x;
            scanf("%lld",&x);
            for(long long j=1; j<=k+1; j++)
            {
                long long res;
                if(j==1)
                    res=1;
                else res=query(j-1,x-1);
                update(j,x,res);
            }
        }
        printf("%lld\n",query(k+1,n));

    }
}


相关文章推荐

Codeforces 597C Subsequences dp + 树状数组

题意 给你n的一个排列,问你包含k个数的子序列个数有多少。 n

Codeforces 597C Subsequences【Dp+二维树状数组】

C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input s...

codeforces-597C-Subsequences【树状数组】

597C-Subsequences

597C. Subsequences【DP】【树状数组】

题目链接http://codeforces.com/problemset/problem/597/C思路就是叫你求长度为k+1(直接当k吧,读完加个1就行)的上升子序列个数。设dp[i][j]为以a[...

[dp+树状数组优化] CF597C. Subsequences

题意:给定1~n的一种排列,求长度为k+1的上升子序列的个数。 (0 题解:DP。首先可以很容易的想到DP[i][j],表示以i为结尾长度为j的上升子序列的个数。 也可以很容易的想到转移 DP[i]...
  • kg20006
  • kg20006
  • 2016年03月27日 11:33
  • 240

【Codeforces Round 333 (Div 2)E】【期望DP概率做法 树状数组转前缀和】Kleofáš and the n-thlon n场比赛m个人获得总名次的期望

E. Kleofáš and the n-thlon time limit per test 1 second memory limit per test 256 megaby...

Codeforces_611D:New_Year_and_Ancient_Prophecy(DP+树状数组)

题意是给定一个n位数字,你现在可以将它分隔成若干个长度更短的数字,例如1234567可以拆分成1234和567两个数字,现在规定一个拆分方案合法当且仅当①拆分出的数字按顺序严格递增②拆除的每个数字是正...

Codeforces Round 223 380C Sereja and Brackets 树状数组

类似的题目有好多,总结成下面的模型: 一个序列,有tot组点对,固定不变,m次查询[l,r]这个区间上能够完全覆盖多少组点对。 由于这些点对是固定不变的,不支持任何的插入,修改,删除,所以我们采取离线...

Codeforces 383C . Propagating tree【树状数组,dfs】

题目大意: 有一棵树,对这个树有两种操作:1:表示为(1 x val),在编号为x的节点上加上val,然后给x节点的每个儿子加上- val,再给每个儿子的儿子加上-(- val),一直加到没有儿子为止...

CodeForces 383C Propagating tree 树上哈希+树状数组

点击打开链接链接 C. Propagating tree time limit per test 2 seconds memory limit per test 25...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:树状数组+dp(不太懂) Codeforces 597C
举报原因:
原因补充:

(最多只允许输入30个字)