JOYOI1432 楼兰图腾 - 树状数组【求二元组个数】

2023-11-14

JOYOI1432 楼兰图腾

传送门

思路:

题目等价于要求满足\(x_1<x_2<x_3,y_1<y_2,y_2>y_3\)\(x_1<x_2<x_3,y_1>y_2,y_2<y_3\)的三元组的数量,此问题可以转化为对于每个数,求前面有多少数比它小,前面有多少数比它大,后面有多少数比它小,后面有多少数比它大。类别求逆序对(前面有多少数比它大)的做法,本题同样可以用树状数组或归并排序做,最终答案即为
\(\sum\)(前面比它小的数的个数*后面比它小的数的个数+前面比它大的数的个数*后面比它大的数的个数)。

AC Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=200000+100;
typedef long long LL;
int n;LL ans1=0,ans2=0;int a[N];LL tr[10][N];
LL ll[N],rl[N],lg[N],rg[N];
int lowbit(int x){return x&(-x);}
void modify(int p,LL k,int op){for(;p<=n;p+=lowbit(p))tr[op][p]+=k;}
LL query(int p,int op){LL ans=0;for(;p;p-=lowbit(p)) ans+=tr[op][p];return ans;}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=n;i++) {modify(a[i],1,1);ll[i]=query(n,1)-query(a[i],1);}
    for(int i=n;i;i--) {modify(a[i],1,2);rl[i]=query(n,2)-query(a[i],2);}
    for(int i=1;i<=n;i++) {modify(a[i],1,3);lg[i]=query(a[i]-1,3);}
    for(int i=n;i;i--) {modify(a[i],1,4);rg[i]=query(a[i]-1,4);}
    for(int i=2;i<=n;i++){ans1+=ll[i]*rl[i],ans2+=(LL)lg[i]*rg[i];}
    printf("%lld %lld",ans1,ans2);
    return 0;
}
/*5
1 5 3 2 4*/

转载于:https://www.cnblogs.com/Loi-Brilliant/p/9657998.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JOYOI1432 楼兰图腾 - 树状数组【求二元组个数】 的相关文章

  • IDEA 自动生成 serialVersionUID 的设置

    1 没有设置之前 选中对应的类名 然后按 alt enter 快捷键 的情况如下所示 2 设置自动生成 serialVersionUID 的方式如下图所示 关键点已逐个标识 3 设置之后 选中对应的类名 然后按 alt enter 快捷键
  • 分布式版本控制工具--Git

    分布式版本控制 Git的灵魂使用 版本控制简介 集中式版本控制 分布式版本控制 Git安装 Git的常用命令 Git配置项 新建仓库 增加 删除文件 提交文件 Git分支 Git的标签 查看信息 远程同步 撤销 版本控制简介 集中式版本控制
  • Vector容器的底层实现

    Vector容器的底层实现 Vector 类成员 构造函数 拷贝构造函数和析构函数 迭代器 函数功能 完整代码 总结 Vector Vector同样是STL六大组件之一 简单来讲他就是一个封装了动态大小数组的顺序容器 同时他可以存入各种各样
  • vue elementUI实现双(多)列表格,内容均自定义

    需求类似这样的 使用普通table实现 样式需要自己设置 table class person info border 1 cellspacing 0 tbody tr th 档案编号 th td personInfo name td th
  • 巴比特

    摘要 之前 由于没法开放注册 中国大模型厂商其实一直束手束脚 而8月31日 北京 上海率先通过了大模型备案 这意味着 跑得快 的企业可以大胆向市场推出产品了 从靠PPT来嘴花花 到放开手脚大干一场 大模型厂商们走向了真正的战场 争用户 抢市
  • LeetCode (二)找出数组中多于半数的数字

    题目 给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数 大于 n 2 的元素 解法 自己的解法 思路 for循环遍历存Map 记录key对应的Count 如果大于半数 返回 package com jzj stu
  • React v16.3新生命周期、性能优化及注意事项

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 React Version 16 3版本对组件的生命周期函数进行了一些修改 在每个react组件中都有以下几个生命周期方法 我们应该掌握最新生命周期 学以致用 以达
  • mciSendString函数简介(播放音乐以及录音相关操作)

    函数功能 播放多媒体音乐 视频等 mciSendString是用来播放多媒体文件的API指令 可以播放MPEG AVI WAV MP3 等等 这个函数有自己的mci指令 可以通过不同的指令实现不同的功能 这里我会详细讲解mciSendStr
  • qemu 启动自定义文件系统命令

    kvm qemu aarch64 bin qemu system aarch64 M virt smp 8 cpu cortex a76 m 4G nographic kernel out kernel arm64 Image append
  • 对以太网粗略理解

    1 以太网定义 以太网 Ethernet 指的是由 Xerox公司创建并由Xerox Intel和 DEC公司联合开发的基带局域网规范 通用的以太网标准于1980年9月30日出台 是当今现有局域网采用的最通用的通信协议标准 是局域网的一种
  • html+css+javascript学习总结

    html用来写页面的结构和内容 css写样式和呈现效果 javascript写行为和动作 1 html常用标签 a 超链接 div 盒子 常用来控制样式的 ul ol 无序列表和有序列表 img 图片标签 button 按钮 form 表单
  • 看懂影片标题,各种电影视频格式标题的含义

    一 资源片源解析 根据命名 可以知道资源的来源 从而判断资源画质的好坏 1 CAM 枪版 珍爱生命 远离枪版 CAM通常是用数码摄像机从电影院盗录 有时会使用小三角架 但大多数时候不可能使用 所以摄像机会抖动 因此我们看到画面通常偏暗 人物
  • 【免费】win7 所有.net framework框架集合,免费下载,若要运行此应用程序,您必须首先安装net framework如何解决

    运行软件缺失框架 若要运行此应用程序 您必须首先安装net framework如何解决 那天我看见网上下载一个框架都要收费还要100大洋 现在真的是干啥都要钱 索性就整理了一个全库供大家下载 做点好事 net 框架所有的 net官网下载地址
  • 摄像机标定到底是在干什么?

    2017年11月13日学习记录 机器视觉 1 摄像机标定概括 刚开始学机器视觉 我研究的方向主要是双目视觉测距 做机器视觉的肯定对摄像机标定并不陌生 我入坑一个月 开始就是看看书 论文 了解了大概流程和研究主要方法 无特别明确目的和压力 然
  • 关于Redis的Zset使用方法

    序言 Zset跟Set之间可以有并集运算 因为他们存储的数据字符串集合 不能有一样的成员出现在一个zset中 但是为什么有了set还要有zset呢 zset叫做有序集合 而set是无序的 zset怎么做到有序的呢 就是zset的每一个成员都
  • Java基础:简单的Runnable 接口创建线程

    创建一个线程 Java 提供了三种创建线程的方法 通过实现 Runnable 接口 通过继承 Thread 类本身 通过 Callable 和 Future 创建线程 为了实现 Runnable 一个类只需要执行一个方法调用 run 声明如
  • 数字图像处理-离散傅里叶变换(opencv3+C++显示)

    参考 http daily zhihu com story 3935067 http blog csdn net keith bb article details 53389819 在学习信号与系统或通信原理等课程里面可能对傅里叶变换有了一
  • 关于局域网、广域网、C/S、P2P编程

    一直以为局域网和广域网的编程没什么不同 实际上确实没什么不同 但这里我要说的是C S和P2P 先说说为局域网编程 局域网编程不用考虑网关 不用考虑NAT 不用考虑消息发送成功后对方将消息丢弃等 这样编程相当简单 只要建立相应的套接口 设置端
  • SQL server基础

    一 SQL Server数据库的数据类型含义 数据类型含义 int 每个数值占用 4字节 2 147 483 648到2 147 483 647之间的整数 smallint 2个字节 存储范围是 32 768 到 32 767 之间的整数
  • Android Studio 红米3 一直运行或者debug不成功,提示 Failed to establish session 解决方案

    换了一个测试机 红米note3开发 一直run OR debug 失败 下面是提示图 找了半天原因 后面发现原因所在了 一般手机默认用开发工具跑起来 会弹出提示 确认是否安装XXX应用 而红米note3就是个奇葩 在它的开发者选项中 有个

随机推荐

  • MATLAB 多目标规划

    作者简介 人工智能专业本科在读 喜欢计算机与编程 写博客记录自己的学习历程 个人主页 小嗷犬的个人主页 个人网站 小嗷犬的技术小站 个人信条 为天地立心 为生民立命 为往圣继绝学 为万世开太平 本文目录 多目标规划 数学模型 正负偏差变量
  • c/c++不定参数函数

    http plutoblog iteye com blog 1150671 不定参数函数 stdarg h是C语言中C标准函数库的头文件 stdarg是由stdandard 标准 arguments 参数 简化而来 主要目的为让函数能够接收
  • WdatePicker日期控件与UEditor富文本编辑器

    WdatePicker日期控件 My97日期控件 下载 更新日志 My97Datepicker Download Changelog 代码中的生日使用插件
  • libevent服务端,多线程应用

    下面的方式是创建多个event base来处理多线程的 主event base用来处理连接请求 各个子event base用来处理读写和关闭请求 另一种方式是 所有的连接 读写 断开操作 都在一个event base里面 然后当读到数据时
  • cesium加webgl的构思

    1 传递gl var gl viewer scene context gl
  • C++类模板

    1 定义类模板 程序清单类模板 1列出了类模板和成员函数模板 明确这些模板不是类和成员函数定义很重要 因为它们是C 编译指令 说明了如何生成类和成员函数定义 不能将模板成员函数放在独立的实现文件中 由于模板不是函数 它们不能单独编译 模板必
  • #、##、__VA_ARGS__的使用,自由扩展printf 可变参数输出到终端和追加到文件等

    include
  • JAVA后端使用MultipartFile类接收处理上传图片【超级简单】

    本例子再SpringBoot项目上 使用Spring MVC的MultipartFile类再JAVA后端 接收前端上传文件请求 1 MultipartFile 单文件图片上传 例子中接收对象与文件 先保存文件 再把文件保存到对象 再保存对象
  • 前端系列之jQuery(jQuery插件)

    jQuery的插件机制 jQuery主要有两种使用方式 1 在jQuery集合对象上调用方法 2 直接调用jQuery方法 扩展jQuery对象上的方法 jQuery fn extend 扩展jQuery工具方法 jQuery extend
  • docker 安装

    docker ce社区版安装 1 首先卸载以前的docker相关内容 yum remove docker docker client docker client latest docker common docker latest dock
  • 102个java计算机本科毕业设计项目大全(附源码)

    今天给计算机专业大四的同学分享102个毕业设计项目 希望对正在为毕业设计发愁的小伙伴有帮助 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传到百du云了 在文末处 大家自行获取即可 1 Springboot高校专业
  • Vue项目打包成移动端APP

    Vue项目打包成移动端APP 需要准备的工具 Hbuilder 目录 Vue项目打包成移动端APP 首先打包vue到dist目录 然后再Hbuilder中打开dist目录 然后将dist包含的 web项目 转换为 移动 APP项目 前几步配
  • python解最小二乘(least square)

    给定 A R d n A in R d times n
  • 常用的前端4种请求方式

    一 GET请求 前端页面 第一种情况下 第二种情况下 后端代码 对应第一种传输对象 接参方式 若我们强行给对象添加 RequestBody注解 会发生如下错误 第二种情形下 我们取消用 PathVariable来接收前端发来的ID 情况如下
  • Vue学习

    Vue环境的搭建以及Vue项目的创建与启动 时光独白 AWY的博客 CSDN博客 vue 环境启动
  • Git命令上传项目到远程仓库

    1 为当前目录添加Git本地仓库 git init 实例化仓库 为当前目录添加Git本地仓库 添加成功会看到 git的隐藏目录 2 添加到暂存区 git add 文件名或目录名或 其中 表示当前目录下的全部文件 将指定文件 目录 当前目录全
  • 使用power shell连接远程linux服务器

    打开powershell 输入ssh 用户名 ip地址 比如 ssh root 111 111 111 111 输入yes 提示要输入密码 此时输入服务器密码即可
  • adb 调试命令

    ADB Android Debug Bridge 这里性能调试如下 性能测试需要进行如下设置 如果要让user模式能够进行root操作 需要更改 system core adb adb c 将无用的log信息去掉 define LOG NI
  • 有符号数与无符号数比较-详解

    正如我们所知道的 编程语句都有很多的基本数据类型 如char inf float等等 而在C和C 中还有一个特殊的类型就是无符号数 它由unsigned修饰 如unsigned int等 大家有没想过 就是因为这些不同的类型 而使大家编写的
  • JOYOI1432 楼兰图腾 - 树状数组【求二元组个数】

    JOYOI1432 楼兰图腾 传送门 思路 题目等价于要求满足 x 1