蓝桥集训之递增三元组

2024-03-05 00:44
文章标签 蓝桥 三元组 递增 集训

本文主要是介绍蓝桥集训之递增三元组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蓝桥集训之递增三元组

  • 核心思想:前缀和

    • 因为b是中间数 遍历b时 ac没有约束关系
    • 所以遍历b 然后求出a有多少比b小的 c有多少比b大的 a*c即可
    • 用哈希表将a[i]中每个数出现次数记录
    • 求其前缀 得到s[i]为**<=i的个数**
    • 分别用as和cs记录比b[i]小的数的个数 简化代码
  •   #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int N = 100010;int a[N],b[N],c[N];int as[N],cs[N];int 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];  //求前缀 s[i]表示<=i的数的个数for(int i=0;i<n;i++) as[i] = s[b[i] - 1];  //as[i]表示对应小于b[i]的元素个数memset(cnt,0,sizeof cnt);memset(s,0,sizeof s);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]];  //cs[i]表示对应大于b[i]的元素个数LL res=0;for(int i=0;i<n;i++) res += (LL)as[i] * cs[i];  //可能爆intcout<<res;}
    

这篇关于蓝桥集训之递增三元组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774790

相关文章

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II 1.题目 1.1递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0491.%E9%80%92%E

PL/SQL工具创建Oracle数据库表,实现id字段的自动递增

通过PL/SQL工具,创建Oracle数据库表,如何实现字段ID自动递增; Oracle的自增需要依靠序列和触发器共同实现 比如:先创建一个表 create table test (id int primary key, name varchar2(10)); 创建一个序列 create sequence test_seq increment by 1 start with 1  min

2014暑假集训搜索专题

A - 漫步校园 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Description LL最近沉迷于AC不能自拔,每天寝室、机房两点一线。由于长时间坐在电脑边,缺乏运动。他决定充分利用每次从寝室到机房的时间,在校园里散散步。整个HDU校园呈方形布局,可划

回溯——8.递增子序列

力扣题目链接 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数组中

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消

【蓝桥杯嵌入式(一)程序框架和调度器】

蓝桥杯嵌入式(一)程序框架和调度器 序、代码命名规则零、STM32和8051⼀、软件及环境安装⼆、⼯程框架搭建1.时钟配置2、SYS配置3、⼯程配置4、NVIC配置5.、Keil配置 三、系统初始化四、任务调度器 链接: 视频出处 序、代码命名规则 以下是一些常见的举例 零、STM32和8051 链接: 8位和32位单片机最本质区别 ⼀、软件及环境安装

【蓝桥杯嵌入式(二)Led、Key、Lcd】

蓝桥杯嵌入式(二)Led、Key、Lcd 五、Led模块1.原理图配置2. 知识点3.底层代码 六、Key模块1.原理图配置2.知识点3.底层代码底层代码(四⾏代码版本)底层代码(状态机版本) 七、LCD模块1.原理图配置2.知识点底层代码 五、Led模块 1.原理图配置 2. 知识点 链接: 上拉电阻的通俗解释 链接: 单⽚机怎么输出⾼电平!推挽输出和开

贪心算法求无序数组最大递增序列

给定一个无序的数组,获取其最大的递增序列。下面使用贪心算法实现: 1、算法实现 void max_seq(int* arr,int len){/// 标记递增序列的开始位置int start = 0;/// 记录最大的递增序列数int max = 0;int i = 1;for( ; i<len; i++){/// 如果当前元素大于上一个元素,说明递增序列已经结束