AcWing 1236:递增三元组

【UV打印机】PrintExp打印软件教程(六)-高级模式(马达) 输入高级模式密码进入高级模式高级模式界面有操作栏、控制栏、参数栏及参数界面操作栏名称功能说明文件加载数据从板卡加载参数保存将参数保存到主板退出退出高级模式固件导入固件导入配套版本下的固件配置*xpcfx导出固件导出当前使用的固件配置*xpcfx导入波形文件导入对应的波形文件*waf操作初始化系统继续初始化动作复位X轴复位回原点控制栏可进行小车运动、闪喷操作(此闪喷为点击进行闪喷,不受平台位置限制),无清洗功能。 阅读详情

题目入口

题目跳转

题目描述

给定三个整数数组

A=[A1,A2,…AN], B=[B1,B2,…BN], C=[C1,C2,…CN],

请你统计有多少个三元组 (i,j,k) 满足:

1.1≤i,j,k≤N
2.Ai<Bj<Ck

输入格式

第一行包含一个整数 N。

第二行包含 N 个整数 A1,A2,…AN。

第三行包含 N 个整数 B1,B2,…BN。

第四行包含 N 个整数 C1,C2,…CN。

输出格式

一个整数表示答案。

数据范围

1≤N≤1e5
0≤Ai,Bi,Ci≤1e5

输入样例

3
1 1 1
2 2 2
3 3 3

输出样例

27

思路讲解

看过题之后,我们首先联想到的解题方法就是三重循环,将符合要求的进行计数处理,最后输出答案,但是这个做法的时间复杂度是O(n^3),大概就是1e15,超过了时限,所以我们应该对其进行优化,我们可以看一下n的数据范围是1e5,所以这道题的做法时间复杂度应该是O(nlogn)或者是O(n),所以我们只能去枚举A,B,C这三个其中的一个,我们选择枚举B的话,可以对A和C产生一个直接的限制,所以我们选择枚举B,我们枚举每一个B中的元素,求出符合要求的A和C的数量,记为cnta,cntc,然后cnta*cntc即为这一次循环得到符合的三元组的数量,计算出每一次循环的符合要求的三元组的数量,然后将其加和即为答案,我们求符合要求的A和C的数量可以使用排序加二分和前缀和这两种任意一种来求解。

代码

排序加二分
#include<iostream>
#include<algorithm>

using namespace std;

const int N = 1e5+10;
int n;
int A[N],B[N],C[N];
//记录符合要求的三元组的数量
long long ans;

/*
算法思路:
枚举B然后看A和C中哪些满足条件即可
本次使用的是排序+二分
*/

int main()
{
    cin >> n;
    for(int i = 1;i <= n;i++)
    {
        cin >> A[i];
    }   
    for(int i = 1;i <= n;i++)
    {
        cin >> B[i];
    }  
    for(int i = 1;i <= n;i++)
    {
        cin >> C[i];
    }  
    sort(A+1,A+n+1);
    sort(C+1,C+n+1);
    for(int i = 1;i <= n;i++)
    {
        int l = 1;
        int r = n;
        while(l < r)
        {
            int mid = l + r + 1 >> 1;
            if(A[mid] >= B[i])r = mid - 1;
            else l = mid;
        }
        long long tempA;
        if(A[l] >= B[i])tempA = 0;
        else tempA = l;
        l = 1;
        r = n;
        while(l < r)
        {
            int mid = l + r >> 1;
            if(C[mid] > B[i])r = mid;
            else l = mid + 1;
        }
        long long tempC;
        if(C[l] <= B[i])tempC = 0;
        else tempC = n - l + 1;
        ans += tempA * tempC;
    }
    cout << ans << endl;
    return 0;
}
前缀和
#include<iostream>
#include<stdio.h>
#include<cstring>

using namespace std;

typedef long long LL;

const int N = 1e5+10;
int n;
int A[N],B[N],C[N];
//sa[i]记录A中1到i中每个数出现的次数的总和
//sc[i]记录A中1到i中每个数出现的次数的总和
int sa[N],sc[N];


int main()
{
    cin >> n;
    //由于A[i],B[i],C[i]都有可能取到0,所以为了避免前缀和的边界问题,将其都加1
    for(int i = 1;i <= n;i++)scanf("%d",&A[i]),A[i]++;
    for(int i = 1;i <= n;i++)scanf("%d",&B[i]),B[i]++;
    for(int i = 1;i <= n;i++)scanf("%d",&C[i]),C[i]++;
    
    for(int i = 1;i <= n;i++)sa[A[i]]++;
    //计算前缀和
    for(int i = 1;i < N;i++)sa[i] += sa[i-1];

    for(int i = 1;i <= n;i++)sc[C[i]]++;
    //计算前缀和
    for(int i = 1;i < N;i++)sc[i] += sc[i-1];


    LL res = 0;
    for(int i = 1;i <= n;i++)
    {
        int cnta = sa[B[i]-1];
        int cntc = sc[N-1] - sc[B[i]];

        res += (LL)cnta * cntc;

    }

    cout << res << endl;

    return 0;
}
GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录 本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。 阅读详情

相关推荐

Cadence Virtuoso Layout 版图绘制

画好原理图,打好pin脚(pin最好以全大写的形式书写,以防后续操作中可能出现Bug) 查看所使用工艺库的design rule文件,确定栅格单位设置大小 在准备绘制的原理图界面启动layout XL/GXL 在layout界面按e,设置网格大小与design rule匹配 直接根据原理图生成版图 根据原理图连接关系显示版图中未连接的飞线 查看和更改原理图与版图中器件对应的链接关系 shift + f:显示器件版图细节 版图的构成:元器件(工艺厂商提供)、器件连接、阱连接、IO和PAD模拟电路

bobo_supper的博客 2万+

递增三元组(超详解)(三种做法)

思路:由于a数组与c数组的取值都受b数组影响,所以可以枚举b【I】,然后在枚举a数组有多少个数小于b[i],c数组中有多少数大于b[i],则当前b[i]合法方案为[c中大于b[i]个数乘a中小于b[i]的个数],可以通过前缀和或二分或双指针去找到小于b[i]的第一个数,大于b[i]的第一个数 1.前缀和 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> usin

qq_51010640的博客 4692

STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控

本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。

weixin_30823001的博客 78

递增三元组

递增三元组 题目描述 核心思路 解法1:二分算法 我们可以给A,B,CA,B,CA,B,C都先排好序,然后固定枚举BBB的每一个元素,然后用二分法,找出AAA中小于当前枚举的元素B[i]B[i]B[i]的数的个数,设有xxx个,找出CCC中大于当前枚举的元素B[i]B[i]B[i]的数的个数,设为yyy个,那么由乘法原理,对于枚举的B[i]B[i]B[i]这个来说,就有x∗yx*yx∗y个递增三元组,依次类推,知道枚举完BBB中的元素,累加答案即可。 解法2:前缀和 我们用数组ca[]ca[]ca[]来

qq_45832461的博客 492

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)

信息抽取实战:三元组抽取 目录信息抽取实战:三元组抽取一、限定领域的三元组抽取比赛介绍数据分析序列标注模型关系分类模型三元组提取总结开放领域的三元组抽取标注平台文本分类新数据进行三元组抽取总结参考文献 一、限定领域的三元组抽取   本项目将会介绍在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。 比赛介绍   该比赛的网址为:http://lic2019.ccf.org.

南有芙蕖 2万+

博途 V15.1安装步骤

温馨提醒:安装此软件电脑配置至少应满足以下要求 处理器 CoreTM i5-3320M 3.3 GHz 或相当 内存 至少8G 硬盘 300 GB SSD 显示器 15.6' 宽屏显示 (1920 x 1080) 1.双击打开【Siemens v15.1】文件夹。 2.鼠标右击【STEP 7 BasicProfess...

谢谢关注“小鱼教你模数电”,各平台同号 9万+

1236. 递增三元组:做题笔记

在第一层循环的基础上,在对第二层数据挑选的时候,就可以利用二分找到我们上面所说的“某个数”,这里的某个数其实也就是当前B数组里第一个大于当前外层循环正在处理的A数组的这个元素,我们知道在这个数之后的B数组中的数都是一种选择的可能。遍历B数组每个元素,可以通过二分找到A数组中第一个大于当前B数组中元素的数的位置,和C数组中第一个大于当前B数组中元素的数的位置,通过元素总数与该位置的相减,得到其中间的元素个数。l 是数组 a 中小于 b[i] 的元素的数量,r 是数组 c 中大于 b[i] 的元素的数量。

Swillow_的博客 1306

告别水印!Vue3项目集成Stimulsoft.Reports.js完整配置与激活指南

本文详细介绍了如何在Vue3项目中集成Stimulsoft.Reports.js,提供从授权策略到性能优化的完整解决方案。通过模块化架构设计和现代化引入方式,帮助开发者高效实现专业级报表功能,同时避免版权风险和水印问题,特别适合中小型项目需求。

weixin_33701294的博客 432

递增三元组 多种做法

差分 二分+排序 lower_bound upper_bound 字符串转数字 对二分模板的理解记忆

nahnah_的博客 699

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]

丨汀、的博客 5421

15、分布式参数热交换器:建模、动态特性与控制

本文综述了分布式参数热交换器的建模、动态特性和控制方法。从热交换器的基本方程推导出发,探讨了一维流动、流动强迫、错流、螺旋和旋转再生式热交换器的建模方法,并分析了其动态行为和频率响应中的共振现象。同时,介绍了热交换器的模拟方法,包括数值模拟和近似方法,并讨论了多种控制策略,如常规控制、最优控制、数字控制以及自适应控制。最后,总结了热交换器研究的发展历程,并展望了未来的研究方向,包括建模精度提升、控制算法优化和跨学科融合等。

w8x9y0z1的博客 123

题解:AcWing 1236.递增三元组

题解:AcWing 1236.递增三元组

SolitudeAlma的博客 319

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

AcWing:1236. 递增三元组

给定三个整数数组。

2301_79973431的博客 392

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Acwing1236.递增三元组java暴力法+正解

2.正解 要找到有多少个三元组(i,j,k)满足条件Ai<Bj<Ck,就是要遍历数组B的每一个Bj,找到当前Bj条件下符合要求的Ai有多少,Ck有多少,再把他俩相乘,就是这个Bj条件下满足条件的三元组数量。//存储每个b[i]下在a中小于b[i]的元素数量。//存储每个b[i]下在c中大于b[i]的元素数量。// 这里的空白字符包括空格(' ')、制表符(\t)、换行符(\n)、回车符(\r)等。//trim() 方法是 String 类的一个方法,用于去除字符串两端的空白字符。这道题用的是前缀和。

qq_74332375的博客 1601

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

AcWing 1236. 递增三元组

AcWing 1236. 递增三元组 给定三个整数数组 A=[A1,A2,…AN],A=[A1,A2,…AN], A=[A1,A2,…AN], B=[B1,B2,…BN],B=[B1,B2,…BN], B=[B1,B2,…BN], C=[C1,C2,…CN],C=[C1,C2,…CN],C=[C1,C2,…CN], 请你统计有多少个三元组 (i,j,k) 满足: 1≤i,j,k≤N Ai<Bj<Ck 输入格式 第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,…AN。 第三行包含 N

qq_52358098的博客 353

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

我的算法笔记之 AcWing_1236_递增三元组

我的算法笔记之 AcWing_1236_递增三元组

C20050415的博客 342

1236. 递增三元组

1236. 递增三元组 - AcWing题库数据范围为1~1e5---->时间复杂度只能为O(n)或者O(nlogn)。 只枚举中间的数组B。对于枚举的每一个bi,找出在A中比其小的a的数量cntA,在C中比其大的c的数量cntC。 cntA*cntC即为当b=bi时的所以满足条件的组合。1.将A,B数组从小到大排序(sort)2.明确目标:在A中寻找最后一个小于bi的a的下标,在C中寻找第一个大于bi的c的下标。将二者作为两次二分的分界点。3.边界情况:当A中没有比bi小的数时,cntA=0;当C中没有比

asdfghrfh的博客 519

AcWing 1236. 递增三元组 解题思路及代码

来讲讲思路,第一反应也是暴力枚举,直接三重循环判断,刚准备动手,额O(N立方)的复杂度和N=1e5的现实让我冷静了下来,这肯定是tle,我们先看数据范围,这么极限的数据,连O(n方)都超时而且 O(n)的算法我肯定想不到,三个变量的组合,因此算法的时间复杂度锁定在O(nlogn)这里,那我们只能用一次一重循环,也需可以使用快排来辅助我们操作,经过。1236. 递增三元组 - AcWing题库。by————2024.2.27刷题记录。

sorryhorizon_L的博客 481

【枚举】AcWing 1236. 递增三元组

acwing 1236. 递增三元组

lele_ne的博客 368

蓝桥杯 递增三元组【二分】

题目链接:AcWing 1236. 递增三元组 给定三个整数数组 A=[A1,A2,…AN], B=[B1,B2,…BN], C=[C1,C2,…CN], 请你统计有多少个三元组 (i,j,k) 满足: 1≤i,j,k≤N Ai<Bj<Ck 输入格式 第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,…AN。 第三行包含 N个整数 B1,B2,…BN。 第四行包含 N个整数 C1,C2,…CN。 输出格式 一个整数表示答案。 数据范围 1≤N≤105, 0≤Ai,Bi,Ci≤105

cutlery1137的博客 297

蓝桥杯--枚举1 AcWing 1236. 递增三元组

AcWing 1236. 递增三元组 给定三个整数数组 A=[A1,A2,…AN], B=[B1,B2,…BN], C=[C1,C2,…CN], 请你统计有多少个三元组 (i,j,k) 满足: 1≤i,j,k≤N Ai<Bj<Ck 输入格式 第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,…AN。 第三行包含 N 个整数 B1,B2,…BN。 第四行包含 N 个整数 C1,C2,…CN。 输出格式 一个整数表示答案。 数据范围 1≤N≤105, 0≤Ai,Bi,Ci≤105 输入

ooold_six的博客 363

Acwing---1236.递增三元组

暴力枚举 三重循环O(N^3) 肯定会超时!第二行包含 N 个整数 A1,A2,…第三行包含 N 个整数 B1,B2,…第四行包含 N 个整数 C1,C2,…数量级,因而最多枚举三个数组中的一个;表示在A数组中i这个值出现次数。第一行包含一个整数 N。暴力枚举O(N^3)

qq_51251599的博客 456

AcWing 1236.递增三元组(看似枚举实则二分)

枚举下的二分

nuc_ghp的博客 936

专题(四) 枚举模拟排序 ——AcWing 1236. 递增三元组

AcWing 1236. 递增三元组 /* n≤1000 => O(n2),O(n2logn) n≤10000=> O(n∗n√) n≤100000=> O(nlogn)*/ import java.io.*; import java.util.Arrays; public class Main{ static int N = 100010; static int A [] = new int[N]; static int B [] = new int[

JohnnyLin 299

蓝桥杯学习记录||1236. 递增三元组

AcWing||1236. 递增三元组 活动地址:https://www.acwing.com/activity/content/19/ 考察要点:枚举 二分 前缀和 双指针 题目要求 输入样例: 3 1 1 1 2 2 2 3 3 3 输出样例: 27 题目地址:https://www.acwing.com/problem/content/1238/ 解析:就是求出C[i]>B[j]>A[k]有多少钟组合,如果用三重循环的话,时间复杂度为O(n3),因为n 为105,n3 为1015

weixin_46709007的博客 361
上一篇: AcWing:连号区间数
下一篇: AcWing:数星星
1z1
1z1
博客等级 码龄7年 70粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值