HDU 4990 Ordered Subsequence --数据结构优化DP
题意:给一串数字,问长度为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相关推荐
- hdu 3401 Trade(单调队列优化dp)
hdu 3401 Trade(单调队列优化dp) 题意:lxhgww喜欢炒股票,他可以在第i天买入或者卖出若干张股票(一天只能买或者卖),两个交易日之间至少相隔w天,问他t天后最多能赚多少. 解题思路 ...
- hdu 4991(树状数组优化dp)
Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 4991 Ordered Subsequence
Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...
- hdu 3962(AC自动机+矩阵优化dp)
转载标记处:http://blog.csdn.net/woshi250hua/article/details/7599472 题目大意:给定m个DNA病毒序列,求碱基构成的长度为n且含有两个以上DNA ...
- HDU 1159.Common Subsequence【动态规划DP】
Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...
- Fxx and game HDU - 5945(单调队列优化dp)
思路:考虑反着dp,从dp[1]倒推dp[x] 因为dp[i]<=dp[j] j<i ,所以考虑用单调队列来优化. 除法不用考虑,考虑加法就行. 代码: #include <bi ...
- Atcoder dp_q Flowers 数据结构优化dp
文章目录 题意 题解 最近在练习atcoder上的dp场,大概只会做一半.我选出一些不会的题目写一下博客. 题意 按顺序每朵花有一个高度,一个美丽度,选出一个高度上升的子序列,求美丽度之和的最大值. ...
- 0x58 数据结构优化DP
补写一下 poj3171 设f[i]表示覆盖L~i的最小花费,把区间按左端点排序,枚举区间,f[a[i].r]=min{f[a[i].l~(a[top].r-1)]}+a[i].c (当然还要和原值比 ...
最新文章
- 如何估算各种物体的重心
- 进制转换converse
- exchange 2007 碰到NDR
- js解决异步的方法汇总
- yum提示Error: rpmdb open failed
- 12 - Runtime实用的几个API
- 计算机超级语言,我发现原来计算机最原始的语言是那么的内涵。。。。
- 20220129刷题--第4题-- cookie
- 实验四+116+陈洁
- WPF中退出时显示是否保存数据提示
- laravel查询重复的数据_php – 使用Laravel Collection获取重复值
- 微服务升级_SpringCloud Alibaba工作笔记0023---Nacos之Namespace空间方案
- 游戏测试永乐大典——服务端架构,游戏服务器架构,游戏数据库设计
- sheng的学习笔记-mysql框架原理
- 大数据与人工智能结课论文
- facebook piexl 像素追踪
- Larval Blade
- 【工具】PrimoCache和Qiling:快速缓存优化加速软件
- DSP TMS320F28377D与TMS320F28335硬件资源对比
- 【JavaScript】原生态兼容IE6的图片轮播