Luogu

Description

求一个长度为n的序列a的最长下降子序列的长度,以及这个长度的子序列种数,注意相同的几个子序列只能算作一个子序列.

n<=5000,a[i]不超过long范围

Sol

求最长下降子序列的长度: 1.f[i]表示以a[i]结尾的最长下降子序列长度

             2.f[i]表示以i结尾的最长下降子序列长度

第一种适用于n比较小的,第二种则适用于n大而a[i]小的,这题显然用第一种吧,而且第一种更方便计数

用num[i]表示以a[i]结尾的长度为f[i]的子序列个数

还需注意的是,这题要去重.

所以更新num[i]数组,j从1循环到i-1时,遇到a[i]==a[j]&&f[i]==f[j]的情况num[i]-=num[j]就好了

因为,在这样的情况中,num[j]所记录的子序列一定也被包含在num[i]中

Code

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #define Rg register
  5. #define il inline
  6. #define db double
  7. #define ll long long
  8. #define mem(a,b) memset(a,b,sizeof(a));
  9. #define go(i,a,b) for(Rg int i=a;i<=b;++i)
  10. #define yes(i,a,b) for(Rg int i=a;i>=b;--i)
  11. using namespace std;
  12. il int read()
  13. {
  14. int x=,y=;char c=getchar();
  15. while(c<''||c>''){if(c=='-')y=-;c=getchar();}
  16. while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
  17. return x*y;
  18. }
  19. const int N=;
  20. int n,ans1,p[N],l[N];//price length
  21. db ans2,nm[N];//number
  22. int main()
  23. {
  24. n=read();
  25. go(i,,n)p[i]=read(),l[i]=;
  26. go(i,,n)
  27. {
  28. go(j,,i-)if(p[j]>p[i])l[i]=max(l[i],l[j]+);
  29. if(l[i]==)nm[i]=;
  30. go(j,,i-)
  31. {
  32. if(p[i]==p[j]&&l[i]==l[j])nm[i]-=nm[j];
  33. if(p[j]>p[i]&&l[j]+==l[i])nm[i]+=nm[j];
  34. }
  35. }
  36. go(i,,n)if(l[i]>ans1)ans1=l[i];
  37. go(i,,n)if(l[i]==ans1)ans2+=nm[i];
  38. printf("%d %.0lf\n",ans1,ans2);
  39. return ;
  40. }

随机推荐

  1. 模板—v-dcc缩点

    int dfn[MAXN],low[MAXN],num,root; int stack[MAXN],top,cnt; bool iscut[MAXN]; int new_id[MAXN],c[MAXN ...

  2. 网站的域名带www的和不带www的有什么区别呀

    国内用户习惯用www,不过默认的不带www的域名要好过带www的,带Www的是二级域名,不带的是顶级域名,默认的在搜索引擎中得权重会比较高 区别就在于一个带www一个不带www 其他都一样.www的域 ...

  3. 中国剩余定理(SCAUOJ 1077)

    1077 韩信点兵 时间限制:500MS  内存限制:65536K提交次数:1103 通过次数:99 题型: 编程题   语言: 无限制 Description 相传汉高祖刘邦问大将军韩信统御兵士多少 ...

  4. DECLARE

    -- 修正用プログラム DECLARE    CURSOR c_adv_fee_detail IS        SELECT adv_fee.fee_mgmt_num,                ...

  5. 提高github下载速度的方法【100%有效】可达到2MB/s

    因为大家都知道的原因,在国内从github上面下载代码的速度峰值通常都是20kB/s.这种速度对于那些小项目还好,而对于大一些的并且带有很多子模块的项目来讲就跟耽误时间.而常见的的方法无非就是修改HO ...

  6. HTML5的5个的新特性

    特性1:正则表达式 无须使用服务端的检测,使用浏览器的本地功能,就可以帮助你判断邮箱的格式,URL,电话,防止用户输入错误的信息,通过H5的pattern属性,很方便的整合这个功能. <inpu ...

  7. 洛谷P1809 过河问题 经典贪心问题

    作者:zifeiy 标签:贪心 题目链接:https://www.luogu.org/problem/P1809 我们假设第 \(i\) 个人过河的耗时是 \(t[i]\) ,并且 \(t[i]\) ...

  8. H3C 不适当的VLAN间路由方式

  9. 【js】vue 2.5.1 源码学习 (九) 响应数组对象的变

    大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的 ...

  10. P1092 电子表格

    题目描述 在流行的电子表格系统中(例如,在Excel中),使用如下计算方式来对列号进行计算. 第1列对应A,第2列对应B,--,第26列对应Z.然后使用两个大写英文字母来表示列:第27列对应AA,第2 ...