HDU-4991-Ordered Subsequence
来源:互联网 发布:mac版本spss 编辑:程序博客网 时间:2024/05/16 12:36
比赛的时候真应该先做这个题,唉,这个题其实不难想,用二维树状数组维护即可。不过我在unique那小卡了一下。
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=10100;const int mod=123456789;int n,m,cnt,a[maxn],b[maxn];int t[110][maxn];int lowbit(int x){ return x&(-x);}int Sum(int x,int pos){ int ans=0; for(;x>0;x-=lowbit(x)) ans=(ans+t[pos][x])%mod; return ans;}void Update(int x,int pos,int val){ for(;x<=cnt;x+=lowbit(x)) t[pos][x]=(t[pos][x]+val)%mod;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { memset(t,0,sizeof(t)); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); b[i]=a[i]; } if(n<m) { printf("0\n"); continue; } sort(b+1,b+n+1); cnt=unique(b+1,b+n+1)-b-1; for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+cnt+1,a[i])-b; Update(a[1],1,1); for(int i=2;i<=n;i++) { for(int j=m;j>=2;j--) { int sum=Sum(a[i]-1,j-1); //printf("SSS %d %d %d %d\n",a[i],i,j,sum); Update(a[i],j,sum); } Update(a[i],1,1); } printf("%d\n",Sum(cnt,m)); } return 0;}
0 0
- HDU-4991-Ordered Subsequence
- hdu 4991 Ordered Subsequence
- HDU 4991 Ordered Subsequence
- 【树状数组】 HDU 4991 Ordered Subsequence
- hdu 4991 Ordered Subsequence(dp+树状数组)
- HDU 4991 Ordered Subsequence -- DP+树状数组
- HDU 4991 / BC 8C Ordered Subsequence
- 【HDU】4991 Ordered Subsequence 线段树&树状数组
- hdu 4991 Ordered Subsequence(树状数组优化DP)
- hdu 4991 Ordered Subsequence(Bestcoder Round #8 1003)
- hdu 4991 Ordered Subsequence(DP优化—树状数组)
- HDU 4991 Ordered Subsequence(dp+树状数组)
- hdu 4991 Ordered Subsequence(树状数组+DP)
- HDU-4991-Ordered Subsequence【树状数组】【动态规划】【好题】
- HDU 4991 Ordered Subsequence DP(套路,BIT优化)
- 【DP】 HDOJ 4991 Ordered Subsequence
- HDU 4990 Ordered Subsequence --数据结构优化DP
- poj2553 Longest Ordered Subsequence
- phantomjs + casperjs 抓取网页截图
- 仙剑四、五、五前模型及资源提取
- TF-IDF
- Ubuntu重装mysql
- leetCode:Minimum Depth of Binary Tree
- HDU-4991-Ordered Subsequence
- 数据结构之排序算法整理(1)
- PowerDesigner 15破解版下载
- 每天一个linux命令(16):which命令
- 黑马程序员-小框架的实现
- 调试成功:server 及 zhujiemian1
- 每天一个linux命令(17):whereis 命令
- 文件传输 个人
- 文件传输 下载