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

递增三元组(蓝桥杯18F)

暴力求解:

#include<iostream>
using namespace std;
int main() {
	int N;
	cin >> N;
	int* A = new int[N];
	int* B = new int[N];
	int* C = new int[N];
	for (int i = 0; i < N;i++) {
		cin >> A[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> B[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> C[i];
	}
	int cnt = 0;
	for (int i = 0; i < N;i++) {
		for (int j = 0; j < N; j++) {
			for (int z = 0; z < N; z++) {
				if (A[i]<B[j]<C[z]) {
					cnt++;
				}
			}
		}
	}
	cout << cnt;
	return 0;
}

优化排序加二分查找:

#include<iostream>
using namespace std;
void Qsort(int arr[], int L, int R) {
	if (L >= R) {
		return;
	}
	int left = L, right = R, key = arr[L], flag = 0;
	while (left < right) {
		if (flag == 0) {
			if (arr[right] < key) {
				arr[left] = arr[right];
				left++;
				flag = 1;
			}
			else {
				right--;
			}
		}
		else if (flag == 1) {
			if (arr[left] > key) {
				arr[right] = arr[left];
				right--;
				flag = 0;
			}
			else {
				left++;
			}
		}
	}
	arr[left] = key;
	Qsort(arr, L, left - 1);
	Qsort(arr, left + 1, R);
}
int tSearch_min(int* arr,int left,int right,int key, int tag) {
	if (tag == 0 && left>right) {
		return left;
	}
	else if(tag == 1 && left>right) {
		return left;
	}
	int mid = (left + right) / 2;
	if (key < arr[mid]) {
		return tSearch_min(arr, left, mid - 1, key, 0);
	}
	else if (key>arr[mid]) {
		return tSearch_min(arr, mid + 1, right, key, 1);
	}
	else {
		int i;
		for (i = mid; i >= left;i--) {
			if (arr[i] < key ) {
				return (i + 1);
			}
		}
		return (i + 1);
	}
}
int tSearch_max(int* arr, int left, int right, int key, int tag) {
	if (tag == 0 && left > right) {
		return left;
	}
	else if (tag == 1 && left > right) {
		return left;
	}
	int mid = (left + right) / 2;
	if (key < arr[mid]) {
		return tSearch_max(arr, left, mid - 1, key, 0);
	}
	else if (key > arr[mid]) {
		return tSearch_max(arr, mid + 1, right, key, 1);
	}
	else {
		int i;
		for (i = mid; i <= right; i++) {
			if (arr[i] > key) {
				return i;
			}
		}
		return i;
	}
}
int main() {
	int N;
	cin >> N;
	int* A = new int[N];
	int* B = new int[N];
	int* C = new int[N];
	for (int i = 0; i < N; i++) {
		cin >> A[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> B[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> C[i];
	}
	Qsort(A, 0, N - 1);
	Qsort(B, 0, N - 1);
	Qsort(C, 0, N - 1);
	int cnt = 0;
	for (int i = 0; i < N;i++) {
		int key = B[i];
		int min = tSearch_min(A, 0, N - 1, key, 0);
		int max = N - tSearch_max(C, 0, N - 1, key, 0);
		cnt += (min*max);
	}
	cout << cnt;
	return 0;
}


http://www.kler.cn/a/538757.html

相关文章:

  • 智能化食品安全管理:AI视频监控在大型商场的技术方案
  • 【Matlab优化算法-第13期】基于多目标优化算法的水库流量调度
  • xss闯关
  • Listener监听器和Filter过滤器
  • 两种交换排序算法--冒泡,快速
  • 嵌入式面试题 C/C++常见面试题整理_7
  • 如何在WPS和Word/Excel中直接使用DeepSeek功能
  • 网络通信的基石:深入理解 TCP/IP 协议栈与 TCP/UDP 协议
  • 在 Windows 上使用 ZIP 包安装 MySQL 的详细步骤
  • react高级面试题
  • Windows Docker笔记-制作、加载镜像
  • 前后端服务配置
  • 从运输到植保:DeepSeek大模型探索无人机智能作业技术详解
  • 【sqlite】python操作sqlite3(含测试)
  • Android 开发APP中参数配置与读取总结
  • Java语言的安全开发
  • DeepSeek 与 Transformer 架构的深度关联
  • springcloud中Seata-1.5.2的使用
  • deepseek v3网络结构源码分析笔记
  • 网络基础之IP
  • NUMA 配置对 Redis 使用的影响:提升性能的秘密武器
  • 【PyQt5 12】如何加载QT designer 设计的界面
  • docker /var/lib/docker/overlay2目录把磁盘空间占满问题
  • 【WebLogic】Linux图形化界面创建WebLogic应用域
  • 25/2/7 <机器人基础> 牛顿-欧拉递推公式,开闭环
  • 常用在线工具