HDU 2227-Find the nondecreasing subsequences(dp+BIT优化)
题意:
给你一个序列a[],求它的不降子序列的个数
分析:
dp[i]表示以i结尾不降子序列的个数,dp[i]=sum(dp[j])+1(j<i&&a[j]<=a[i]);答案就是sum(dp[i])
但发现一个问题n很大O(n^2)肯定超时,想起前面做的两道题,用线段树优化,它是用维护的是和,可以用BIT优化,但又发现a[i]的值很大没法存,就又想到了离散化,恩这个题就解决了。
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define N 100010
#define read freopen("in.txt", "r", stdin)
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
ll a[N],bit[N],tmp[N],dp[N];
int n;
void add(int x,ll d){
while(x<=n){
bit[x]=(bit[x]+d)%mod;
x+=(x&(-x));
}
}
ll sum(int x){
ll num=;
while(x>){
num=(num+bit[x])%mod;
x-=(x&(-x));
}
return num;
}
int main()
{
while(~scanf("%d",&n)){
for(int i=;i<=n;++i){
scanf("%I64d",&a[i]);
tmp[i]=a[i];
}
sort(tmp+,tmp+n+);
int len=unique(tmp+,tmp+n+)-tmp-;
/*for(int i=1;i<=len;++i)
cout<<tmp[i]<<endl;*/
memset(dp,,sizeof(dp));
memset(bit,,sizeof(bit));
ll total=;
for(int i=;i<=n;++i){
int pos=lower_bound(tmp+,tmp+len+,a[i])-tmp;
dp[i]=;
dp[i]=(dp[i]+sum(pos))%mod;
add(pos,dp[i]);
total=(total+dp[i])%mod;
}
printf("%I64d\n",total);
}
return ;
}
HDU 2227-Find the nondecreasing subsequences(dp+BIT优化)的更多相关文章
- HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 Find the nondecreasing subsequences ...
- HDU 2227 Find the nondecreasing subsequences(DP)
Problem Description How many nondecreasing subsequences can you find in the sequence S = {s1, s2, s3 ...
- HDU 2227 Find the nondecreasing subsequences dp思想 + 树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=2227 用dp[i]表示以第i个数为结尾的nondecreasing串有多少个. 那么对于每个a[i] 要去找 & ...
- HDU 2227 Find the nondecreasing subsequences (线段树)
Find the nondecreasing subsequences Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/3 ...
- HDU 2227 Find the nondecreasing subsequences (数状数组)
Find the nondecreasing subsequences Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/3 ...
- HDU 2227 Find the nondecreasing subsequences
题目大意:给定一个序列,求出其所有的上升子序列. 题解:一开始我以为是动态规划,后来发现离散后树状数组很好做,首先,c保存的是第i位上升子系列有几个,那么树状数组的sum就直接是现在的答案了,不过更新 ...
- hdu 5745 La Vie en rose DP + bitset优化
http://acm.hdu.edu.cn/showproblem.php?pid=5745 这题好劲爆啊.dp容易想,但是要bitset优化,就想不到了. 先放一个tle的dp.复杂度O(n * m ...
- HDU 3506 (环形石子合并)区间dp+四边形优化
Monkey Party Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...
- HDU 5313——Bipartite Graph——————【二分图+dp+bitset优化】
Bipartite Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- hdu 2227(树状数组+dp)
Find the nondecreasing subsequences Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/3 ...
随机推荐
- 用cxSelect插件补充一下回显过滤项功能
这个在DJANGO里,最好在过滤之后,让用户知道自己过滤的选择.所以要定位默认值. 1,在HTML文件里显示默认值: <form class="uk-form" name=& ...
- hdu 1905 小数化分数2
;}
- jquery cookie 用法
jquery cookie 用法 $.cookie("name","value","options") 当不设置options时,此coo ...
- [主席树]HDOJ3874 Necklace
题意:n个数 m个询问 询问的是[l, r]区间内不同的数的和 没有修改,静态的主席树即可 与 SPOJ QUERY 一样 将重复的元素建树即可 注意范围:$N \le 50000$ 每个值不超过1 ...
- Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
解决方案 : http://www.cnblogs.com/fly-100/p/4570366.html 这里我们直接在使用Input.GetMouseButtonDown(0)的地方加了一个检测函数 ...
- *[topcoder]LCMSetEasy
http://community.topcoder.com/stat?c=problem_statement&pm=13040 DFS集合全排列+LCM和GCD.但事实上,有更简单的算法,列在 ...
- POJ1118 Lining Up
快弄死我了 最后的原因是abs和fabs的区别... 说点收获:1.cmp函数返回的是int,所以不要直接返回double相减的结果2.define inf 1e9和eps 1e-93.在整数相除得到 ...
- 通过jcifs.jar 创建远程文件和文件夹
package com.project.remoteUrl;import java.io.File;import java.io.InputStream;import java.io.OutputSt ...
- libXml ARC forbids explicit message send of'release'
'release' is unavailable: not available in automatic reference counting mode ARC forbids explicit me ...
- Windows JAVA 环境配置
Java SE Development Kit Downloads http://www.oracle.com/technetwork/java/javase/overview/index.html ...