题意:给一串数字,问长度为m的严格上升子序列有多少个

解法:首先可以离散化为10000以内,再进行dp,令dp[i][j]为以第i个元素结尾的长度为j的上升子序列的个数,

则有dp[i][j] = SUM(dp[k][j-1])  (a[k] < a[i] && k < i)

不可能直接遍历,所以考虑优化,可以看出dp方程相当于一个区间求和,所以可以用树状数组来优化。

代码:

#include <iostream>
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#define SMod 123456789
#define lll __int64
using namespace std;
#define N 10007lll c[N],a[N],b[N];
int n,m;
lll dp[N][104];int lowbit(int x)
{return x & (-x);
}void modify(int pos,lll val)
{while(pos <= n){c[pos] += val;pos += lowbit(pos);}
}lll getsum(int pos)
{lll res = 0;while(pos > 0){res = (res+c[pos])%SMod;pos -= lowbit(pos);}return res;
}int main()
{int i,j;while(scanf("%d%d",&n,&m)!=EOF){for(i=1;i<=n;i++){scanf("%I64d",&a[i]);b[i] = a[i];}sort(b+1,b+n+1);memset(dp,0,sizeof(dp));for(i=1;i<=n;i++)dp[i][1] = 1;for(j=2;j<=m;j++){memset(c,0,sizeof(c));for(i=1;i<=n;i++){int ind = lower_bound(b+1,b+n+1,a[i])-b;dp[i][j] = getsum(ind-1);modify(ind,dp[i][j-1]);}}lll ans = 0;for(i=1;i<=n;i++)ans = (ans + dp[i][m])%SMod;printf("%I64d\n",ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/whatbeg/p/3961018.html

HDU 4990 Ordered Subsequence --数据结构优化DP相关推荐

  1. hdu 3401 Trade(单调队列优化dp)

    hdu 3401 Trade(单调队列优化dp) 题意:lxhgww喜欢炒股票,他可以在第i天买入或者卖出若干张股票(一天只能买或者卖),两个交易日之间至少相隔w天,问他t天后最多能赚多少. 解题思路 ...

  2. hdu 4991(树状数组优化dp)

    Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. hdu 4991 Ordered Subsequence

    Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  4. BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...

  5. hdu 3962(AC自动机+矩阵优化dp)

    转载标记处:http://blog.csdn.net/woshi250hua/article/details/7599472 题目大意:给定m个DNA病毒序列,求碱基构成的长度为n且含有两个以上DNA ...

  6. HDU 1159.Common Subsequence【动态规划DP】

    Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...

  7. Fxx and game HDU - 5945(单调队列优化dp)

    思路:考虑反着dp,从dp[1]倒推dp[x] 因为dp[i]<=dp[j]  j<i  ,所以考虑用单调队列来优化. 除法不用考虑,考虑加法就行. 代码: #include <bi ...

  8. Atcoder dp_q Flowers 数据结构优化dp

    文章目录 题意 题解 最近在练习atcoder上的dp场,大概只会做一半.我选出一些不会的题目写一下博客. 题意 按顺序每朵花有一个高度,一个美丽度,选出一个高度上升的子序列,求美丽度之和的最大值. ...

  9. 0x58 数据结构优化DP

    补写一下 poj3171 设f[i]表示覆盖L~i的最小花费,把区间按左端点排序,枚举区间,f[a[i].r]=min{f[a[i].l~(a[top].r-1)]}+a[i].c (当然还要和原值比 ...

最新文章

  1. 如何估算各种物体的重心
  2. 进制转换converse
  3. exchange 2007 碰到NDR
  4. js解决异步的方法汇总
  5. yum提示Error: rpmdb open failed
  6. 12 - Runtime实用的几个API
  7. 计算机超级语言,我发现原来计算机最原始的语言是那么的内涵。。。。
  8. 20220129刷题--第4题-- cookie
  9. 实验四+116+陈洁
  10. WPF中退出时显示是否保存数据提示
  11. laravel查询重复的数据_php – 使用Laravel Collection获取重复值
  12. 微服务升级_SpringCloud Alibaba工作笔记0023---Nacos之Namespace空间方案
  13. 游戏测试永乐大典——服务端架构,游戏服务器架构,游戏数据库设计
  14. sheng的学习笔记-mysql框架原理
  15. 大数据与人工智能结课论文
  16. facebook piexl 像素追踪
  17. Larval Blade
  18. 【工具】PrimoCache和Qiling:快速缓存优化加速软件
  19. DSP TMS320F28377D与TMS320F28335硬件资源对比
  20. 【JavaScript】原生态兼容IE6的图片轮播

热门文章

  1. 正能量之项目经理的自我修养
  2. 微软的创新还是败笔?Windows 8为苹果创造天赐良机
  3. Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
  4. sharepoint配置问题解决方案
  5. mybatis insert 动态生成插入的列及插入的值
  6. 基于微信小程序开发的仿微信demo
  7. Oracle优化检查表
  8. Lecture 16 Minimum Spanning Trees
  9. 单机安装ZooKeeper
  10. post提交参数过多时,取消Tomcat对 post长度限制