51nod1202【DP-树状数组维护】
来源:互联网 发布:淘宝包邮退货邮费规则 编辑:程序博客网 时间:2024/06/08 16:53
思路:
DP[i]代表从1 到 i 以 a[i] 为末尾的子序列个数,dp[i]=dp[i]+dp[j](a[i]!=a[j]) +1
DP[i]代表从1 到 i 以 a[i] 为末尾的子序列个数,dp[i]=dp[i]+dp[j](a[i]!=a[j]) +1
利用树状数组维护以值 a[i] 结尾的子序列个数。
#include<bits/stdc++.h>using namespace std;typedef long long LL;const LL mod=1e9+7;const int N=1e5+10;LL c[N];int lowbit(int x){return x&(-x);}void add(int d,LL v){while(d<N){c[d]=(c[d]+v)%mod;d+=lowbit(d);}}LL Sum(int x){LL ans=0;while(x){ans=(ans+c[x])%mod;x-=lowbit(x);}return ans;}int main(){int n,x;memset(c,0,sizeof(c));scanf("%d",&n);for(int i=1;i<=n;i++){LL sum=0;scanf("%d",&x);sum=(Sum(100000)+1)%mod;sum=(sum-Sum(x)+Sum(x-1)+mod)%mod;add(x,sum);}printf("%lld\n",Sum(100000));return 0;}
0 0
- 51nod1202【DP-树状数组维护】
- 51nod1202 dp+递推
- HDU6170【DP+树状数组+差分维护】
- 【51Nod1202】子序列个数(简单dp)
- 树状数组维护区间最大值
- 51nod1202(递推)
- hdu5125 dp+树状数组
- hdu4521 dp+树状数组
- HDU5542(dp+树状数组)
- HDU5542(dp + 树状数组)
- poj3468 树状数组解法(树状数组维护区间更新)
- 51Nod1202子序列个数
- 51nod1202-递推&规律
- 【51Nod1202】子序列个数
- HDOJ 4046 - Panda 树状数组维护
- poj3264 树状数组维护区间最值
- hdu5192 BC#34 树状数组维护
- 树状数组区间维护及单点查询
- 20条LINUX常用命令
- poj3414
- 框架模式笔记:MVC 与MVP框架(完)
- CentOS下安装mysql
- 每日十道面试题(四)
- 51nod1202【DP-树状数组维护】
- 22.冒泡,选择,插入,希尔,快速,堆排序
- 剑指offer练习Python(二)
- 主机与客户机桥接时,主机SSH连不上客户机
- C语言关于数组的部分总结
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- [编程题] 跳石板
- 读《深入理解java虚拟机》第二章1
- Windows下mysql的安装