当前位置: 首页 > news >正文

AcWing 1236. 递增三元组(蓝桥杯C++ AB辅导课)

AcWing 1236. 递增三元组(蓝桥杯C++ AB辅导课)

题目传送门
在这里插入图片描述

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int n;
int a[N], b[N], c[N];
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	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(b + 1, b + n + 1);
	sort(c + 1, c + n + 1);
	ll ans = 0;
	for (int i = 1, indexA = 1, indexC = 1; i <= n; i ++) {
		int B = b[i];
		while (indexA <= n && a[indexA] < B) {
			indexA ++;
		}
		while (indexC <= n && c[indexC] <= B) {
			indexC ++;
		}
		// 按照以下例子说明 
		/*1 3 5
		  4 4 6
		  5 7 8*/
		// 当B指针指向4时,A指针进行比对当比对到元素5时,
		// 发现不符合A<B,所以跳过,但这里的A指针直到了
		// 下标3位置,再转到C指针进行比对,但所有的元素
		// 都大于4,符合B<C,所以可以匹配的递增三元组的
		// 个数是ans = (3 - 1) * (3 - 1 + 1) = 6
		// 以此类推,所有三元组的个数为ans = 6 + 6 + 6 = 18 
		ans += (ll)(indexA - 1) * (n - indexC + 1);
	}
	cout << ans <<endl;
	return 0;
}
http://www.dtcms.com/a/26374.html

相关文章:

  • C语言流程控制学习笔记
  • 特力康输电线路杆塔倾斜智能监测装置:创新技术如何提升电网安全
  • 《千恋万花》无广版手游安卓苹果免费下载直装版
  • React之旅-02 创建项目
  • python: SQLAlchemy (ORM) Simple example using SQLite
  • 2023年河北省职业院校技能大赛网络系统管理赛项样题解法
  • 汽车零部件工厂如何通过工业一体机实现精准控制
  • “深入浅出”系列之C++:(8)libevent 库
  • 机器学习小项目之加利福尼亚房价数据分析
  • 【Spring详解三】默认标签的解析
  • BuildFarm Worker 简要分析
  • Git命令行入门
  • 【数据分析】通过个体和遗址层面的遗传相关性网络分析
  • 前端面试题-异步任务队列控制
  • 叠焊和平面焊
  • Mongoose 详解
  • 小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
  • Page Assist - 本地Deepseek模型 Web UI 的安装和使用
  • Spring Cloud 服务调用 Feign
  • C++:iterator迭代器失效
  • c++播放音频
  • top命令输出内容详解
  • 【设计模式】【创建型模式】建造者模式(Builder)
  • FreeRTOS-rust 编译分析
  • 【C++】实现一个JSON解析器
  • ubuntu上如何查看coredump文件默认保存在哪个路径?
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑲】
  • Xilinx FPGA工程移植步骤---包含软核工程
  • LeetCode刷题---哈希表---215
  • Jedis 客户端 用于java连接redis服务