树状数组+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));

    }
}


CodeForces830B【树状数组+线段树】

思路: 就是 你好像就是要维护一下,你pop的当前值与之前的pop值的位置之间有多少个要移一移,然后算一下,然后就变成了模拟。。 线段树维护 值 和 位置,树状数组维护已经取了没有。 7 ...
  • KEYboarderQQ
  • KEYboarderQQ
  • 2017年07月28日 15:22
  • 152

Codeforces Round #406 (Div. 2):C. Berzerk(记忆化搜索解决博弈问题)

C. Berzerk time limit per test 4 seconds memory limit per test 256 megabytes input standard in...
  • Jaihk662
  • Jaihk662
  • 2017年03月24日 15:23
  • 781

【打CF,学算法——五星级】CodeForces 478D (dp计数)

【CF简介】 提交链接:CF 478D 题面: D. Red-Green Towers time limit per test 2 seconds ...
  • David_Jett
  • David_Jett
  • 2016年07月12日 11:11
  • 502

概率dp入门的简单题(hdu 4405,牡丹江,codeforces)

最近学习了一下概率dp,感觉没有想象中的那么难。主要还是状态的转移方程的构建。 对于”求概率正推,求期望反推“这句话有了初步的理解。期望的意思是说你现在处在一个状态,还需要几步到达最终状态,这是一个期...
  • NK_test
  • NK_test
  • 2015年05月07日 23:58
  • 722

Codeforces 724E 最大流=最小割+dp求最小割

题意: 有n个城市,每个城市有p【i】的东西,可以在那个城市卖c【i】的东西,两两城市可以进行一次c的运送,只能从小的编号的往大的编号运。 问最多能卖多少货物。 思路: 最大流:建图,s到n个...
  • naipp
  • naipp
  • 2016年10月10日 17:49
  • 640

大坑!Codeforce DP题总结(持续更新)

个人非常喜欢做DP题,因为DP题有着特殊的数学美感持续不断吸引着我
  • rrtyui
  • rrtyui
  • 2014年09月22日 23:25
  • 2137

bzoj3038 上帝造题的七分钟2

并查集+树状数组
  • sdfzyhx
  • sdfzyhx
  • 2016年10月24日 20:44
  • 163

Apple Tree(树状数组+线段树)

Apple TreeDescription: There is an apple tree outside of kaka’s house. Every autumn, a lot of apple...
  • cax1165
  • cax1165
  • 2016年08月12日 16:05
  • 743

树状数组求区间最大值

讲这个的博文已经不少了,但感觉不够详细不够通俗易懂,所以我尝试着更详细更通俗易懂的说一下我的理解。   这个算法只支持单点修改和区间查询最值。每一次维护和查询的时间复杂度都是O((logn)^2),但...
  • u010598215
  • u010598215
  • 2015年09月04日 10:42
  • 4846

CodeForces 301D(树状数组)

题目链接:codeforces 301D题意分析: 给你n , m两个数,1 ≤ n, m ≤ 2e5,n代表n个不同数字,且这些数字都在区间[ 1 , n ]之间,这就说明1~n每个数出现一次。m...
  • fuyukai
  • fuyukai
  • 2015年04月29日 13:41
  • 531
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:树状数组+dp(不太懂) Codeforces 597C
举报原因:
原因补充:

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