(枚举)(模拟)(前缀和)(数组模拟哈希)(可二分)1236. 递增三元组

简介: (枚举)(模拟)(前缀和)(数组模拟哈希)(可二分)1236. 递增三元组

题目链接

1236. 递增三元组 - AcWing题库

一些话

int f[N];

memset(f,0,sizeof f)影响不到f[N]

所以尽量不要对f[N]赋值,不要用f[N]操作

流程

//由三重暴力i,j,k因为三重暴力底下是分别用i和j,j和k作比较,想到可以拆成i~j,j ~k 再乘起来,

// 但 n < 1e5,双循环复杂度也还是太高,不过还有更优的方法,

// 即枚举b中元素,求b的第k个元素大于a中元素的个数,和b的第k个元素小于c中元素的个数,然后相乘。可以通过前缀和+哈希或二分来实现

// 前缀和+哈希要先统计a和c的元素个数,然后通过前缀和来得到a和c中小于等于某值的元素个数的数组,

// 然后求b的第k个元素大于a中元素的个数就是这个a中小于等于b[k] -1 的元素个数,即s[b[k] - 1]

//b的第k个元素小于c中元素的个数就是c中元素的个数减去c中小于等于b的第k个元素的个数,即s[N-1] - s[b[i]];

套路

统计数组中小于等于多个某值的元素个数:

       先哈希统计元素个数,然后前缀和

1. for(int i = 0;i < n;i++) cnt[a[i]]++;
2. for(int i = 1;i < N;i++) s[i] += s[i-1] + cnt[i];

ac代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1e5 + 10;
int a[N],b[N],c[N],cc[N],ca[N],cnt[N],s[N];
int main(){
    int n;
    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]++;
    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++) ca[i] = s[b[i]-1];
    memset(s,0,sizeof s);
    memset(cnt,0,sizeof cnt);
    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++) cc[i] = s[N-1] - s[b[i]];
    long long ans = 0;
    for(int i = 0;i < n;i++){
        ans += ca[i] * (long long) cc[i];
    }
    cout << ans << endl;
    return 0;
}
目录
相关文章
|
前端开发 芯片
【芯片前端】保持代码手感——握手协议ready打拍时序优化
【芯片前端】保持代码手感——握手协议ready打拍时序优化
419 0
|
存储 边缘计算 对象存储
阿里云盘正式公测
今天,我们的第一款个人云产品——阿里云盘,正式启动公测
4953 0
阿里云盘正式公测
|
7月前
|
人工智能 并行计算 调度
进行GPU算力管理
本篇主要简单介绍了在AI时代由‘大参数、大数据、大算力’需求下,对GPU算力管理和分配带来的挑战。以及面对这些挑战,GPU算力需要从单卡算力管理、单机多卡算力管理、多机多卡算力管理等多个方面发展出来的业界通用的技术。
1121 165
进行GPU算力管理
|
11月前
|
编解码 数据可视化 IDE
【Python篇】matplotlib超详细教程-由入门到精通(下篇)1
【Python篇】matplotlib超详细教程-由入门到精通(下篇)
199 3
|
6月前
|
消息中间件 监控 算法
用Apifox调试Socket.IO接口,从原理到实践
传统HTTP协议"请求-响应"的离散式通信机制已难以满足需求,这正是Socket.IO这类实时通信框架的价值所在。
用Apifox调试Socket.IO接口,从原理到实践
|
9月前
|
机器学习/深度学习 自然语言处理 算法
调研180多篇论文,这篇综述终于把大模型做算法设计理清了
《A Systematic Survey on Large Language Models for Algorithm Design》综述了过去三年大型语言模型(LLMs)在算法设计中的应用。LLMs通过自然语言处理技术,助力生成、优化和验证算法,在优化、机器学习、数学推理等领域展现出广泛应用前景。尽管存在资源需求高、结果不确定等挑战,LLMs仍为算法设计带来新机遇。论文地址:https://arxiv.org/abs/2410.14716。
310 14
|
Java C++ Spring
谈谈springboot里面的守护线程与本地线程
【4月更文挑战第18天】在Spring Boot中,线程的概念同Java标准线程模型一致,即区分为守护线程和用户线程。Spring Boot本身并不直接提供创建守护线程或用户线程的特殊机制,但它允许你通过标准Java方式或者利用Spring的框架特性来管理这些线程
627 2
|
关系型数据库 MySQL 数据库
Navicat备份数据库
涵盖`Navicat`数据库备份、数据安全及备份策略等主题。文库采用精美主题,提升阅读体验。
251 1
Navicat备份数据库
|
11月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
前端开发
CSS动画变形宝典:Transform属性,打造动态视觉盛宴!
CSS动画变形宝典:Transform属性,打造动态视觉盛宴!

热门文章

最新文章