在完成了分配任务之后,西部 314314 来到了楼兰古城的西部。

相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(),他们分别用 V 和  的形状来代表各自部落的图腾。

西部 314314 在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了 nn 个点,经测量发现这 nn 个点的水平位置和竖直位置是两两不同的。

西部 314314 认为这幅壁画所包含的信息与这 nn 个点的相对位置有关,因此不妨设坐标分别为 (1,y1),(2,y2),…,(n,yn)(1,y1),(2,y2),…,(n,yn),其中 y1∼yny1∼yn 是 11 到 nn 的一个排列。

西部 314314 打算研究这幅壁画中包含着多少个图腾。

如果三个点 (i,yi),(j,yj),(k,yk)(i,yi),(j,yj),(k,yk) 满足 1≤i<j<k≤n1≤i<j<k≤n 且 yi>yj,yj<ykyi>yj,yj<yk,则称这三个点构成 V 图腾;

如果三个点 (i,yi),(j,yj),(k,yk)(i,yi),(j,yj),(k,yk) 满足 1≤i<j<k≤n1≤i<j<k≤n 且 yi<yj,yj>ykyi<yj,yj>yk,则称这三个点构成  图腾;

西部 314314 想知道,这 nn 个点中两个部落图腾的数目。

因此,你需要编写一个程序来求出 V 的个数和  的个数。

输入格式

第一行一个数 nn。

第二行是 nn 个数,分别代表 y1,y2,…,yny1,y2,…,yn。

输出格式

两个数,中间用空格隔开,依次为 V 的个数和  的个数。

数据范围

对于所有数据,n≤200000n≤200000,且输出答案不会超过 int64int64。
y1∼yny1∼yn 是 11 到 nn 的一个排列。

输入样例:

5
1 5 3 2 4

输出样例:

3 4
class BitTree:def __init__(self, n: int):self.n = nself.tree = [0 for _ in range(n + 1)]def lowbit(self, x: int) -> int:return x & (-x)def add(self, i: int, val: int) -> None:while i <= self.n:self.tree[i] += vali += self.lowbit(i)def query(self, i: int) -> None:res = 0while 1 <= i:res += self.tree[i]i -= self.lowbit(i)return resdef main():n = int(input())nums = list(map(int, input().split()))BT = BitTree(n)     left_less = [0 for _ in range(n)]left_great = [0 for _ in range(n)]for i in range(n):x = nums[i]left_less[i] = BT.query(x - 1)left_great[i] = BT.query(n) - BT.query(x)BT.add(x, 1)for i in range(n + 1):BT.tree[i] = 0right_less = [0 for _ in range(n)]right_great = [0 for _ in range(n)]for i in range(n - 1, -1, -1):x = nums[i]right_less[i] = BT.query(x - 1)right_great[i] = BT.query(n) - BT.query(x)BT.add(x, 1)A = 0V = 0for i in range(n):A += left_less[i] * right_less[i]V += left_great[i] * right_great[i]print("{} {}".format(V, A))if __name__ == "__main__":main()

【每日一题】|楼兰图腾(python解法)相关推荐

  1. leetcode每日一题·救生艇问题(Python)

    leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...

  2. 头条校招(今日头条2017秋招真题)1——python解法

    题目描述 头条的2017校招开始了!为了这次校招,我们组织了一个规模宏大的出题团队.每个出题人都出了一些有趣的题目,而我们现在想把这些题目组合成若干场考试出来.在选题之前,我们对题目进行了盲审,并定出 ...

  3. Python 每日一题(一元二次方程求解)

    Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养. 题目: 输入一个一元二次方程的系数 a, b, c,求解方程的根. 分析:  1.一元二次方程标准形式: (a ≠ ...

  4. Python 每日一题(猴子吃桃问题)

    Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养. 题目: 一个猴子第一天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个.第二天早上吃了剩下桃子的1半,以后每天 ...

  5. 力扣牛客每日刷题(Python解法持续更新)

    力扣牛客每日刷题(持续更新) 初试结束第15天, 之前简单的处理了部分毕设方面的任务, 对接下来的学习做了个简单的规划 决定每天开始刷几道力扣题提高一下算法的理解,不能让之前学的数据结构都忘记了 每道 ...

  6. 你不得不看的leetcode常见题(3月份每日一题)——Python

    3月快刷了一半的题想起来应该记录一下-前几天有用JAVA写的有用C++写的,但后面没有标注的都是用Python写的. 小白一枚,有不对的或者需要改进的地方恳请各位大佬批评指正! 文章目录 2020年三 ...

  7. LeetCode 458. Poor Pigs--智力题「小白鼠试毒」--C++,Python解法

    题目地址:Poor Pigs - LeetCode There are 1000 buckets, one and only one of them is poisonous, while the r ...

  8. LeetCode 221. Maximal Square----动态规划--谷歌面试算法题--Python解法

    题目地址:Maximal Square - LeetCode Given a 2D binary matrix filled with 0's and 1's, find the largest sq ...

  9. LeetCode 148. Sort List--面试算法题--C++,Python解法

    LeetCode 148. Sort List–面试算法题–C++,Python解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大 ...

  10. LeetCode 93. Restore IP Addresses--面试算法题--Python解法

    题目地址:Restore IP Addresses - LeetCode Given a string containing only digits, restore it by returning ...

最新文章

  1. 什么是时间导数(Time derivative)
  2. C++ Primer 5th笔记(chap 15 OOP)继承中的类作用域
  3. mysql特有语法_MySQL详细的基础语法
  4. 我家云刷android系统教程,我家云刷机教程——小白详细版(篇二)
  5. json web token没有哪个成分_SpringBoot 2.1.4集成JWT实现token验证
  6. Linux编辑只读文件
  7. POJ 3178 凸包+DP (巨坑)
  8. windows系统mysql-5.7官方绿色版zip包安装教程
  9. oracle数据库面试题及答案
  10. MSCD software disk for win vista龙帝国vista 软件光盘合集
  11. 科学计算机弧度,科学计算器角度换算(学生计算器怎么算角度)
  12. 兆,字节,位等单位转换
  13. springboot+nodejs+vue公寓客房预订网站
  14. 美通企业日报 | 洲际集团酒店将撤除一次性小包装洗护用品;新能源汽车同时面临新老质量问题...
  15. Notepad++添加读取十六进制插件HexEditor
  16. 如何使用Transformers和Tokenizers从头开始训练新的语言模型
  17. 差速小车的Cartographer建图
  18. python三维立体画_用matplotlib创建三维立体图
  19. 中秋节活动中奖名单公布啦!!
  20. 不需要到健身房的互动健身,so cool

热门文章

  1. 人工智能步入金融领域的主流玩法
  2. 利用二维码进行市场推广的十大新玩法
  3. 计算机趣味数学社团活动管理制度,趣味数学社团活动方案
  4. 下载加密的流媒体视频
  5. 小小勇者服务器维护,小小勇者神秘商人刷新机制位置攻略
  6. 不小心清空了回收站怎么恢复,回收站删除的东西可以恢复吗
  7. 医疗保险前台系统数字字典
  8. simulink模型中的仿真时间和仿真步长的区别
  9. uniapp中web-view的使用
  10. Windows系列原版系统镜像下载