当前位置: 首页 > 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;
}

相关文章:

  • 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迭代器失效
  • 盖茨说对中国技术封锁起到反作用
  • 季后赛主场优势消失之谜,这事竟然要赖库里
  • 外交部:中方期待印巴巩固和延续停火势头,避免冲突再起
  • 我国成功发射遥感四十号02组卫星
  • 著名军旅作家、文艺评论家周政保逝世,享年77岁
  • 广西钦州:坚决拥护自治区党委对钟恒钦进行审查调查的决定