lightoj 1085【离散化+树状数组】
2016-11-20 00:54
363 查看
题意:
求所有的上升子序列种数;
思路:
我想先离散化一下,然后用树状数组维护一下。
最终答案就是sum(n) ?
卧槽,好像是;然后就过了。。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1000000007;
const int N=1e5+10;
LL arr
,n;
LL c[N*4];
void add(LL i,LL v)
{
while(i<=n)
{
c[i]=(c[i]+v)%mod;
i+=i&(-i);
}
}
LL Sum(LL i)
{
LL ans=0;
while(i>0)
{
ans=(ans+c[i])%mod;
i-=i&(-i);
}
return ans%mod;
}
vector<LL>xs;
int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
xs.clear();
for(int i=1;i<=n;i++)
{
scanf("%lld",&arr[i]);
xs.push_back(arr[i]);
}
sort(xs.begin(),xs.end());
vector<LL>::iterator e=unique(xs.begin(),xs.end());
for(int i=1;i<=n;i++)
arr[i]=lower_bound(xs.begin(),e,arr[i])-xs.begin()+1;
memset(c,0,sizeof(c));
LL temp;
for(int i=1;i<=n;i++)
{
temp=(Sum(arr[i]-1)+1%mod);
add(arr[i],temp);
}
printf("Case %d: %lld\n",cas++,Sum(n));
}
return 0;
}
求所有的上升子序列种数;
思路:
我想先离散化一下,然后用树状数组维护一下。
最终答案就是sum(n) ?
卧槽,好像是;然后就过了。。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1000000007;
const int N=1e5+10;
LL arr
,n;
LL c[N*4];
void add(LL i,LL v)
{
while(i<=n)
{
c[i]=(c[i]+v)%mod;
i+=i&(-i);
}
}
LL Sum(LL i)
{
LL ans=0;
while(i>0)
{
ans=(ans+c[i])%mod;
i-=i&(-i);
}
return ans%mod;
}
vector<LL>xs;
int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
xs.clear();
for(int i=1;i<=n;i++)
{
scanf("%lld",&arr[i]);
xs.push_back(arr[i]);
}
sort(xs.begin(),xs.end());
vector<LL>::iterator e=unique(xs.begin(),xs.end());
for(int i=1;i<=n;i++)
arr[i]=lower_bound(xs.begin(),e,arr[i])-xs.begin()+1;
memset(c,0,sizeof(c));
LL temp;
for(int i=1;i<=n;i++)
{
temp=(Sum(arr[i]-1)+1%mod);
add(arr[i],temp);
}
printf("Case %d: %lld\n",cas++,Sum(n));
}
return 0;
}
相关文章推荐
- LightOJ-1085-树状数组,离散化,dp
- LightOJ 1085 All Possible Increasing Subsequences (DP&离散化&树状数组)
- lightoj 1085【离散化+树状数组】
- [树状数组]LightOJ 1085 - All Possible Increasing Subsequences
- lightoj1085 - All Possible Increasing Subsequences(树状数组)
- lightoj 1085 - All Possible Increasing Subsequences 【树状数组优化dp】
- HDOJ 4325 —— 树状数组 + 离散化
- 树状数组+离散化(hdu 5862)
- bzoj3289 Mato的文件管理(树状数组求逆序对+莫队+离散化)
- HDU 5792 World is Exploding(树状数组+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- Ultra-QuickSort(树状数组 + 离散化)
- lightoj-1080-Binary Simulation【树状数组】
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- Ultra-QuickSort(离散化+树状数组求逆序数)
- NYOJ-600 花儿朵朵【离散化+树状数组】
- Wannafly挑战赛3 C.位数差【思维+离散化+二分+树状数组】
- 树状数组--求逆序对-离散化
- LightOJ 1188 Fast Queries(离线树状数组)
- CodeForces 459D Pashmak and Parmida's problem 树状数组 + 离散化