Date:2022.04.01
题意描述:
在完成了分配任务之后,西部 314 来到了楼兰古城的西部。
相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(∧),他们分别用 V 和 ∧ 的形状来代表各自部落的图腾。
西部 314 在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了 n 个点,经测量发现这 n 个点的水平位置和竖直位置是两两不同的。
西部 314 认为这幅壁画所包含的信息与这 n 个点的相对位置有关,因此不妨设坐标分别为 (1,y1),(2,y2),…,(n,yn),其中 y1∼yn 是 1 到 n 的一个排列。
西部 314 打算研究这幅壁画中包含着多少个图腾。
如果三个点 (i,yi),(j,yj),(k,yk) 满足 1≤i<j<k≤n 且 yi>yj,yj<yk,则称这三个点构成 V 图腾;
如果三个点 (i,yi),(j,yj),(k,yk) 满足 1≤i<j<k≤n 且 yi<yj,yj>yk,则称这三个点构成 ∧ 图腾;
西部 314 想知道,这 n 个点中两个部落图腾的数目。
因此,你需要编写一个程序来求出 V 的个数和 ∧ 的个数。
输入格式
第一行一个数 n。
第二行是 n 个数,分别代表 y1,y2,…,yn。
输出格式
两个数,中间用空格隔开,依次为 V 的个数和 ∧ 的个数。
数据范围
对于所有数据,n≤200000,且输出答案不会超过 int64。
y1∼yn 是 1 到 n 的一个排列。
输入样例:
5
1 5 3 2 4
输出样例:
3 4

思路:核心任务是求出每个a[i]a[i]a[i]前、后面分别有多少>a[i]、<a[i]>a[i]、<a[i]>a[i]、<a[i],涉及区间求和用BIT。
每一步动态添加a[i]a[i]a[i],分别统计出a[i]a[i]a[i]前、后的>a[i]、<a[i]>a[i]、<a[i]>a[i]、<a[i]的数共多少个,用getsumgetsumgetsum。

代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
typedef long long LL;
LL n,m,a[N],b[N],tr[N];
LL dal[N],dar[N],xiaol[N],xiaor[N];
LL lowbit(LL x) {return x&-x;}
void add(LL x,LL c)
{for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=c;
}
LL getsum(LL x)
{LL res=0;for(int i=x;i;i-=lowbit(i)) res+=tr[i];return res;
}
int main()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){xiaol[i]=getsum(a[i]-1);dal[i]=getsum(n)-getsum(a[i]);add(a[i],1);}memset(tr,0,sizeof tr);for(int i=n;i>=1;i--){xiaor[i]=getsum(a[i]-1);dar[i]=getsum(n)-getsum(a[i]);add(a[i],1);}LL ans1=0,ans2=0;for(int i=1;i<=n;i++){ans1+=dal[i]*dar[i];ans2+=xiaol[i]*xiaor[i];}cout<<ans1<<' '<<ans2;return 0;
}

【进阶指南】数据结构 - 楼兰图腾【BIT】相关推荐

  1. 算法竞赛进阶指南 0X40数据结构进阶——楼兰图腾

    题目链接 AcWing 241. 楼兰图腾 easy 题目描述 在完成了分配任务之后,西部 314 314 314 来到了楼兰古城的西部. 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个 ...

  2. python进阶指南_Python特性工程动手指南

    python进阶指南 介绍 (Introduction) In this guide, I will walk through how to utilize data manipulating to ...

  3. 算法竞赛进阶指南 pdf_限时!字节跳动大牛2个月标星达70k的算法笔记,免费开源...

    我说算法有"化腐朽为神奇的力量"你信吗? 算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落.许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解, ...

  4. 李煜东算法进阶指南打卡题解

    算法竞赛进阶指南 一.0x00 基本算法 1)位运算 2)递推与递归 3)前缀和与差分 4)二分 5)排序 6)倍增 7)贪心 8)习题 二.0x10 基本数据结构 1)栈 2)队列 3)链表与邻接表 ...

  5. 《算法竞赛进阶指南》刷题记录

    总算闲下来一些辣!然后最近发现其实看书是真真很有效但是一直没有落实!所以决定落实一下这段时间把这本书看完题目做完! 然后发现还有挺多题目挺巧妙的于是一堆博客预警,,,可能最近会写很多比较水(但是我还是 ...

  6. 开发者的以太坊进阶指南 | Jeth 以太坊系列线下活动第四期(北京)

    2019独角兽企业重金招聘Python工程师标准>>> ** 介绍** Jeth 以太坊系列线下活动:<开发者的以太坊进阶指南>北京站来了! Jeth 是由掘金技术社区主 ...

  7. 阿里大佬总结的算法进阶指南,助你进大厂!

    大家好,我是林哥! 最近一个来自阿里的大佬总结了一份秋招算法进阶指南<LeetCode-Go>,全文一共有150多页,包含了所有常见的核心算法题目,助力大家在秋招末期拿到满意的Offer. ...

  8. 卧槽!阿里《算法进阶指南》火了,完整版 开放下载!

    最近一个来自阿里的大佬总结了一份秋招算法进阶指南<LeetCode-Go>,全文一共有150多页,包含了所有常见的核心算法题目,助力大家在秋招末期拿到满意的Offer. 以下是这份阿里秋招 ...

  9. 《从Excel到R 数据分析进阶指南》一3.4 更改数据格式

    本节书摘来自异步社区<从Excel到R 数据分析进阶指南>一书中的第3章,第3.4节,作者 王彦平(蓝鲸),更多章节内容可以访问云栖社区"异步社区"公众号查看 3.4 ...

最新文章

  1. 设计模式的征途—10.装饰(Decorator)模式
  2. Borland C++Builder 6下实现RichEdit滚屏效果[原创]
  3. Codeforces 755B. PolandBall and Game 贪心
  4. word中将半角标点符号(如双引号等)转换为全角
  5. dump导入oracle需要提前建表吗_数据库dump导入
  6. java中二进制怎么说_面试:说说Java中的 volatile 关键词?
  7. java容器类2:Map及HashMap深入解读
  8. win10安装python3_win10 64位肿么安装python3.x
  9. HihoCoder-1174拓扑排序
  10. django进阶04部署上线(nginx,uwsgi,supervisor)
  11. 【LwM2M】LwM2M协议官方文档
  12. Ubuntu文件目录结构详解
  13. 浪潮服务器开启远程管理,最新浪潮服务器远程管理(27页)-原创力文档
  14. 网站服务器对域名有要求,网站域名备案对服务器的要求
  15. OpenGL学习002-配置GLAD
  16. LCD液晶显示屏颜色显示波长研究与总结?
  17. error: Failed dependencies: perl(Data::Dumper) is needed by MySQL-server-5.6.46-1.el7.x8
  18. XML Shema 笔记整理(1)
  19. CorelDRAW X7导出pdf发现部分有白边如何处理
  20. 用Python将excel表格按照列拆分为多个表格

热门文章

  1. 学生管理系统和c语言学习心得
  2. 【iMessage苹果推送】苹果群发Provisioning Profile文件所使用的Certificate是雷同的
  3. 达利食品集团网站分析
  4. 03. Redis 常用配置
  5. 阿里巴巴已offer:Java实习五面详细面经(附解答)
  6. Vue_12_Spa_项目6次-JWT
  7. html程序国庆节祝福,2019国庆节祝福国家的祝福语大全 祝福表白祖国简短一句话...
  8. 牛客网 F题 集训队脱单大法:这是一道只能由学姐我自己出数据的水题
  9. soap 转 rest java_WSO2 API Manager - 它可以将REST请求转换为后端的SOAP请求吗?
  10. 为FreeSWITCH增加号码段