cogs 859 数列【线段树】
来源:互联网 发布:linux nvidia 驱动 编辑:程序博客网 时间:2024/06/06 02:03
【题目描述】
一个简单的数列问题:
给定一个长度为n的数列,求这样的三个元素
满足
【输入格式】
第1行是一个整数n(1<=n<=50000)。
接下来n行,每行一个元素ai(0<=ai<=32767)。
【输出格式】
一个数,满足
【输入样例】
512341
【输出样例】
6
【数据规模】
对于30%的输入数据有n<=200。
对于80%的输入数据有n<=10000。
对于100%的输入数据有n<=50000。
题解:
因为a只有32767,所以我们可以把a的值当做下标。等于把下标为a的点染上颜色。。。线段树中的值保存染上颜色的点的个数
这样我们查询区间和即可。。
#include<iostream>#include<cstdio>#include<cstring>using namespace std;long long tree[200000]={0},minl[50001]={0},minr[50001]={0},a[50001]={0};void insert(int i,int l,int r,int aa){ int mid; if (l==r&&r==aa) { ++tree[i]; return; } mid=(l+r)/2; if (aa<=mid) insert(i*2,l,mid,aa); else insert(i*2+1,mid+1,r,aa); tree[i]=tree[i*2]+tree[i*2+1];}long long work(int i,int l,int r,int aa,int b){ long long ans=0; int mid; if (aa<=l&&r<=b) return tree[i]; mid=(l+r)/2; if (aa<=mid) ans+=work(i*2,l,mid,aa,b); if (b>mid) ans+=work(i*2+1,mid+1,r,aa,b); return ans;}int main(){ freopen("queueb.in","r",stdin); freopen("queueb.out","w",stdout); int n,i,j; long long ans=0; scanf("%d",&n); for (i=1;i<=n;++i) { scanf("%lld",&a[i]); a[i]+=2; } for (i=1;i<=n;++i) { insert(1,1,32769,a[i]); if (i>1) minl[i]=work(1,1,32769,1,a[i]-1); } memset(tree,0,sizeof(tree)); for (i=n;i>=1;--i) { insert(1,1,32769,a[i]); if (i<n) minr[i]=work(1,1,32769,1,a[i]-1); if (i>1) ans+=minl[i]*minr[i]; } printf("%lld\n",ans); fclose(stdin); fclose(stdout);}
0 0
- cogs 859 数列【线段树】
- 线段树模板 cogs数列操作c
- COGS 859 数列
- cogs 数列
- 【线段树】COGS 1427. zwei
- COGS 1612. 大话西游 (线段树)
- COGS 775. 山海经 【线段树】
- 【COGS】256 [POI2001] 金矿 线段树
- 【COGS】1272 [AHOI2009] 行星序列 线段树
- COGS 577 蝗灾 线段树+CDQ分治
- 线段树--数列操作
- 【COGS】950 切割矩形 线段树&树状数组
- 【线段树】【NOI 1999】【cogs 284】内存分配
- COGS-2275 [HEOI 2016] seq(树状数组+线段树)
- 【cogs240】数列操作【线段树】
- Cogs 1688. [ZJOI2008]树的统计Count(树链剖分+线段树||LCT)
- AHOI 2009 行星序列 BZOJ 1798 COGS 1272 线段树模板题:加、乘标记
- COGS-1715 [CQOI2011]动态逆序对(树状数组+线段树)
- leetcode--String to Integer (atoi)
- android Smali静态分析(一)
- iOS 表视图控件当存在导航栏与Tabbar时内容的自动偏移
- 【C++】纯虚函数的简单应用。
- Leetcode Sum Root to Leaf Numbers
- cogs 859 数列【线段树】
- 【leetcode】Flatten Binary Tree to Linked List
- POJ 3695 Rectangles(容斥)
- 如何在win7中使用IIS和花生壳搭建简单服务器
- 使用jekyll在github上搭建静态博客
- 【面试题】-判断单链表是否有环并找到环入口(快慢指针)
- 分治算法 求数组逆序数
- 适配器模式
- Lex学习笔记