题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2492/

题目大意:给定一个序列,求长度为三的子序列(a,b,c)使得a<b<c或a>b>c,求这样的序列的个数;只要对于每一个位置的数,用树状数组维护前缀和,求出该位置前面比他大的数的个数和比他小的个数,再用另一个树状数组从末位向前维护该位置后面比他大的数的格式和比他小的数的个数。最终 前大*后小+前小*后大 对n个位置求和即可。

代码如下:

 #include<bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
typedef long long ll;
typedef unsigned long long ull;
#define pf printf
#define mem(a,b) memset(a,b,sizeof(a))
#define prime1 1e9+7
#define prime2 1e9+9
#define pi 3.14159265
#define scand(x) scanf("%llf",&x)
#define f(i,a,b) for(int i=a;i<=b;i++)
#define scan(a) scanf("%d",&a)
#define dbg(args) cout<<#args<<":"<<args<<endl;
#define pb(i) push_back(i)
#define ppb(x) pop_back(x)
#define inf 0x3f3f3f3f
#define maxn 100010
int n,m,t;
int a[maxn],c[maxn];
int lowbit(int x)
{
return x&(-x);
}
int query(int x)
{
int ans=;
for(int i=x;i;i-=lowbit(i))
{
ans+=c[i];
}
return ans;
}
void update(int x,int C)
{
for(int i=x;i<=;i+=lowbit(i))
{
c[i]+=C;
}
}
int l1[maxn],r1[maxn],l2[maxn],r2[maxn];
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
std::ios::sync_with_stdio(false);
scan(t);
while(t--)
{
scan(n);
f(i,,n)scan(a[i]);
mem(c,);
f(i,,n)
{
l1[i]=query(a[i]-);//查询左侧比a[i]小的数的个数
l2[i]=i--l1[i];//查询左侧比a[i]大的数的数量
update(a[i],);
}
mem(c,);
for(int i=n;i>=;i--)
{
r1[i]=query(a[i]-);//右侧比a[i]小的数的个数
r2[i]=n-i-r1[i];//右侧比a[i]大的数的个数
update(a[i],);
}
ll ans=;
f(i,,n)
{
ans+=l1[i]*r2[i]+l2[i]*r1[i];
}
pf("%lld\n",ans);
}
}

最新文章

  1. CenterOS 7 常用命令
  2. JavaScript Lib Interface (JavaScript系统定义的接口一览表)
  3. Linux下多网卡同网段多IP网络分流设定方法
  4. hdu 5112 A Curious Matt
  5. wuzhicms 自定义SQL 标签
  6. Log4E
  7. 14.4.3 Adaptive Hash Index 自适应hash index
  8. QT实现窗口缩放打开与关闭(重叠窗口,太有意思了)
  9. hdu3278Puzzle
  10. CDN技术详解及实现原理
  11. linux-ubuntu下fastQC的安装
  12. Angular服务的5种创建方式
  13. python并发编程之多进程(实现)
  14. Java大小写转化
  15. tensorflow安装-【老鱼学tensorflow】
  16. Cocos2dx开发之运行与渲染流程分析
  17. mybatis的三种批量插入以及次效率比较
  18. soul
  19. 洛谷 P2812 校园网络【[USACO]Network of Schools加强版】 解题报告
  20. python + lisp hy的新手注记1

热门文章

  1. swap和shm的区别
  2. AndroidStudio自动导入包
  3. Vue源码之数据驱动(个人向)
  4. STL迭代器的使用、正向、逆向输出双向链表中的所有元素
  5. C++扬帆远航——12(抓小偷)
  6. 从头认识js-js客户端检测
  7. 查询mysql版本号
  8. 当微信小程序遇上filter~
  9. Safari配置WebApp----添加启动图和桌面图标让你的WebApp在ios设备上体验如原生一样
  10. Go性能分析大杀器PPROF