Makes And The Product

https://codeforces.com/problemset/problem/817/B

求三元组(i,j,k)满足 ai*aj*ak是最小的数量

显然我们要排序,我们就确认了最小值是现在的a1*a2*a3

接下来,思考a1,a2,a3可不可以替换

就需要考虑a1,a2,a3之间的关系

1.a1==a2 && a2==a3

找到一直满足a3==ai 的最大索引

数量就是

2.a1==a2 && a2!=a3

只有a3可以替换

找到一直满足a3==ai 的最大索引

数量是

3.a1!=a2 && a2==a3

a2,a3都可以替换

找到一直满足a3==ai 的最大索引

数量是

4.a1!=a2 && a2!=a3

和第2个一样

cpp 复制代码
// Problem: B. Makes And The Product
// Contest: Codeforces - Educational Codeforces Round 23
// URL: https://codeforces.com/problemset/problem/817/B
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<iostream>
#include<algorithm>
#include<vector>
#define INF (1ll<<60)
using namespace std;
typedef long long ll;
const int N=1e5+9;
int a[N];
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    }
    sort(a+1,a+1+n);
    // a1,a2,a3 能否交换
    ll index=0;
    if(a[1]==a[2] && a[2]==a[3]){
    	for(int i=3;i<=n;i++){
    		if(a[i]==a[3]){
    			index=i;
    		}else{
    			break;
    		}
    	}
    	cout<<(index*(index-1)*(index-2))/(3*2)<<'\n';
    }
    if(a[1]==a[2] && a[2]!=a[3]){
    	for(int i=3;i<=n;i++){
    		if(a[i]==a[3]){
    			index=i;
    		}else{
    			break;
    		}
    	}
    	cout<<(index-2)<<'\n';
    }
    if(a[1]!=a[2] && a[2]!=a[3]){
    	for(int i=3;i<=n;i++){
    		if(a[i]==a[3]){
    			index=i;
    		}else{
    			break;
    		}
    	}
    	cout<<(index-2)<<'\n';
    }
    if(a[1]!=a[2] && a[2]==a[3]){
    	for(int i=3;i<=n;i++){
    		if(a[i]==a[3]){
    			index=i;
    		}else{
    			break;
    		}
    	}
    	cout<<(index-1)*(index-2)/2<<'\n';
    }
    return 0;
}
相关推荐
实心儿儿6 分钟前
Linux —— 进程概念 - 程序地址空间
linux·运维·算法
菜鸟丁小真11 分钟前
LeetCode hot100-287.寻找重复数和994.腐烂的橘子
数据结构·算法·leetcode·知识点总结
发发就是发40 分钟前
USB系统架构概述:从一次诡异的枚举失败说起
驱动开发·单片机·嵌入式硬件·算法·fpga开发
少许极端41 分钟前
算法奇妙屋(四十七)-ST表
算法·st表·rmq
kishu_iOS&AI1 小时前
Pytorch —— 自动微分模块
人工智能·pytorch·python·深度学习·算法·线性回归
北风toto1 小时前
深入解析JWT Token生成原理与安全加密技术详解
算法·安全·哈希算法
DeepModel1 小时前
通俗易懂讲透 EM 算法(期望最大化)
人工智能·python·算法·机器学习
Pentane.1 小时前
【力扣hot100】【Leetcode 15】三数之和|暴力枚举 双指针 算法笔记及打卡(14/100)
数据结构·笔记·算法·leetcode
不知名的老吴1 小时前
高阶函数的应用与函数对象概念
算法
Mr_pyx2 小时前
【LeetCode Hot 100】 - 缺失的第一个正数完全题解
数据结构·算法