蓝桥杯国赛每日一题:递增三元组(前缀和,贡献法)

题目描述:

给定三个整数数组

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≤10^5,
0≤Ai,Bi,Ci≤10^5

输入样例:
3
1 1 1
2 2 2
3 3 3
输出样例:
27

解题思路:
求每个满足 ai < bj < ck的组合。

可以转换为:将b固定,遍历bj,求a中小于bj的数 * c中大于bj的数,是两数相乘便是bj贡献的次数。 

需要提前预处理a,c,使得as[i] = 0-i中ai小于i的个数。cs同理大于ci

由于前缀和中0为默认首相,所以将输入的a,b,c都++,与0区分开,有利于求前缀和。

参考代码:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
typedef long long LL;
const int N = 1e5+10;
int n;
int a[N],b[N],c[N];
int as[N],cs[N],cnt[N];
int s[N];

int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i],a[i]++;
    for(int i=0;i<n;i++) cin>>b[i],b[i]++;
    for(int i=0;i<n;i++) cin>>c[i],c[i]++;
    
    //预处理as
    for(int i=0;i<n;i++) cnt[a[i]]++;
    for(int i=1;i<N;i++) s[i] = s[i-1] + cnt[i];
    for(int i=0;i<n;i++) as[i] = s[b[i]-1];
    
    memset(cnt,0,sizeof cnt);
    memset(s,0,sizeof s);
    
    //预处理cs
    for(int i=0;i<n;i++) cnt[c[i]]++;
    for(int i=1;i<N;i++) s[i] = s[i-1] + cnt[i];
    for(int i=0;i<n;i++) cs[i] = s[N-1] - s[b[i]];
    
    LL res = 0;
    for(int i=0;i<n;i++) res += (LL)as[i] * cs[i];
    cout<<res<<endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/610337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

postman工具使用

一、配置每个接口都有公共的请求头 1.1 新建一个collect集合 my test 1.2 在pre-request script 输入配置 pm.request.addHeader("uid:24011"); pm.request.addHeader("version:2.0.0"); pm.request.addHeader("timezone:8"); pm.request.ad…

Redis 实战之监视器

监视器 成为监视器向监视器发送命令信息总结 成为监视器 发送MONITOR 命令可以让一个普通客户端变为一个监视器&#xff0c; 该命令的实现原理可以用以下伪代码来实现&#xff1a; def MONITOR():# 打开客户端的监视器标志client.flags | REDIS_MONITOR# 将客户端添加到服务器…

基于微信小程序的校园二手交易平台设计与实现(论文+源码)_kaic

基于微信小程序的校园二手交易平台 设计与实现 摘 要 随着绿色低碳消费和循环经济的理念越来越深入人心,大学生二手商品市场发展迅猛&#xff0c;而大部分二手交易平台运输方式与收售方式对于大学生用户群体并不适用&#xff0c;所以急需一款针对大学生二手商品交易的软件&…

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建API密钥调用文档调用说明API服务域名通信协议字符编码公…

视频号小店保证金,服务费,手续费是多少?货款结算周期多长?

大家好&#xff0c;我是电商糖果 随着视频号小店越来越火&#xff0c;很多商家都想入驻小店。 入驻之前大家对视频号的收费问题都比较好奇。 糖果2022年就开始做店的了&#xff0c;对小店的保证金&#xff0c;服务费的&#xff0c;手续费&#xff0c;货款结算周期都非常了解…

Windows使用Miniconda3安装python、环境配置以及conda常用命令

Windows使用Miniconda3安装python以及conda常用命令 这是学习使用python的第一篇文章&#xff0c;这将是一个关于python学习和使用的一个系列文章的开始&#xff0c;有兴趣的可以给个关注持续获取更新内容。 Miniconda3是什么&#xff1f; Miniconda3是一个轻量级的Anaconda发…

【双曲几何-05 庞加莱模型】庞加来上半平面模型的几何属性

文章目录 一、说明二、双曲几何的上半平面模型三、距离问题四、弧长微分五、面积问题六、python实现 一、说明 我们知道&#xff0c;双曲几何的著名模型有四种&#xff1a;微分解析模型、庞加莱盘、庞加莱半平面、克莱因盘。庞加莱圆盘模型是表示双曲几何的一种方法&#xff0c…

【Linux】Centos7配置JDK

1.启动虚拟机、Xshell、Xftp 2.在Xshell中新建一个会话&#xff0c;用于连接到虚拟机中 3.因为虚拟机里自带有JDK&#xff0c;所以需要先卸载自带的JDK 3.1.查询已安装的 jdk 列表 rpm -qa | grep jdk3.2.将查询到的全部删除 yum -y remove XXX&#xff08;上面查询到的 j…

【机器学习300问】82、RMSprop梯度下降优化算法的原理是什么?

RMSprop&#xff0c;全称Root Mean Square Propagation&#xff0c;中文名称“均方根传播”算法。让我来举个例子给大家介绍一下它的原理&#xff01; 一、通过举例来感性认识 建议你第一次看下面的例子时忽略小括号里的内容&#xff0c;在看完本文当你对RMSprop有了一定理解时…

豆芽机置入语音芯片WTN6040-8S:开启智能生活新篇章,让豆芽制作更便捷有趣

豆芽机的开发背景&#xff1a; 豆芽作为一种营养丰富、味道鲜美的食品&#xff0c;深受广大消费者的喜爱。然而&#xff0c;传统的豆芽生产过程繁琐&#xff0c;需要耗费大量的时间和人力&#xff0c;且存在生产效率低、质量不稳定等问题。随着人们生活节奏的加快和对健康饮食的…

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 文章目录 调度框架介绍K8s scheduler 介绍K8s scheduler的初始化Cobra介绍K8s scheduler中初始化的源代码解析 调度框架介绍 这是官方对于v1.27调度框架的介绍文档&#xff1a;https://v1-27.docs.kubernetes.io/docs/…

地球行星UE5和UE4

地球行星&#xff0c;包含多种地球风格&#xff0c;可蓝图控制自转和停止&#xff0c;可材质自转. 支持版本4.21-5.4版本 下载位置&#xff1a;https://mbd.pub/o/bread/ZpWZm5lv b站工坊&#xff1a;https://gf.bilibili.com/item/detail/1105582041 _______________________…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了&#xff0c;直接上干货。 在Java中&#xff0c;类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态&#xff0c;而方法则用于描述事物可以做的事情。对象也…

批量无人值守设备运维如何轻松搞定,设备授权和分组很关键

如今数字化时代&#xff0c;很多企业的一线业务依托无人值守的智能终端设备展开&#xff0c;这类设备的广泛使用可以帮助企业以较小的成本铺开大规模的业务&#xff0c;比如现在随处可见的智能售货机&#xff0c;商场的各类智能互动终端等等。 这类设备整体上可以降低业务开展…

注册测绘师历年真题及答案解析

点赞、留言、关注“地知通”公众号&#xff0c;免费获取注册测绘师历年真题及答案解析学习材料。 声明&#xff1a;转载此文不为商业用途。文字和图片版权归原作者所有&#xff0c;若有来源标注错误或侵犯了您的合法权益&#xff0c;请与我们联系&#xff0c;我们将及时处理&am…

RegExp魔法阵与Cookie记忆宫殿:JavaScript 中的秘密宝藏

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f506;RegExp &#x1f3b2; 1 什么是正则表达式 &#x1f3b2;2 创建…

Android11 InputDispatcher 分发事件流程分析

在 Android11 InputReader分析 一文中分析到&#xff0c;InputReader将数据放入iq队列后&#xff0c;唤醒InputDispatcher线程&#xff0c;执行InputDispatcher的dispatchOnce方法 //frameworks\native\services\inputflinger\dispatcher\InputDispatcher.cpp void InputDispa…

【MQTT】MQTT协议和相关概念介绍

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

转行网络安全的重要建议,助你顺利入门

目录 为什么写这篇文章 为什么我更合适回答这个问题 先问自己3个问题 1.一定要明确自己是否是真喜欢&#xff0c;还是一时好奇。 2.自学的习惯 3.选择网安、攻防这行的目标是什么&#xff1f; 确认无误后&#xff0c;那如何进入这个行业&#xff1f; 1.选择渗透测试集中…

Boost库的使用

1 下载与安装 1.1 下载 网址&#xff1a;Boost C Libraries 进入后选择自己需要的版本安装即可 1.2 安装 1.2.1 解压 1.2.2 编译安装 双击bootstrap.bat 这一步完成后会生成一个b2.exe文件 双击b2.exe文件运行&#xff08;此步需要花费较长的时间&#xff09; 之后再stag…
最新文章