ABC318-E

挺有意思的一题,就当积累一下吧。

做法

枚举i和k会超时,那就只枚举j。

#include<bits/stdc++.h>

using namespace std;

int n;

int a[300010];

vector<int> v[300010];

int main(){

scanf("%d",&n);

map<int,int> mp;//数的种类

for(int i=1;i<=n;i++){

scanf("%d",&a[i]);

v[a[i]].push_back(i);//存下标

mp[a[i]]++;

}

long long ans=0;

for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){

for(int i=1;i<v[it->first].size();i++){

ans+=1ll*(v[it->first][i]-v[it->first][i-1]-1)*i*(v[it->first].size()-i);

//(v[it->first][i]-v[it->first][i-1]-1)是不同的j,i是在a[j]前面a[i]的个数,(v[it->first].size()-i)是在a[j]前面a[i]的个数

}

}

cout<<ans<<endl;

}

相关推荐
想带你从多云到转晴几秒前
04、数据结构与算法---双向链表
java·数据结构·算法·链表
阿里加多1 分钟前
第 5 章:Go 内存模型与 Happens-Before 原则
开发语言·后端·golang
穿条秋裤到处跑8 分钟前
每日一道leetcode(2026.04.11):三个相等元素之间的最小距离 II
算法·leetcode
网域小星球12 分钟前
C 语言从 0 入门(二十)|指针进阶:指针数组、数组指针与函数指针
c语言·开发语言·函数指针·数组指针·指针进阶
飞鼠_16 分钟前
详解c++中的sturct
开发语言·c++
小白学大数据21 分钟前
分布式爬虫核心技术详解与工程实践
开发语言·分布式·爬虫·python
CoderCodingNo24 分钟前
【GESP】C++一级真题 luogu-B4495, [GESP202603 一级] 交朋友
开发语言·c++
海寻山34 分钟前
Java内部类:4种类型+实战场景+面试避坑
java·开发语言·面试
Lsk_Smion39 分钟前
Hot100(开刷) 之 长度最小的数组--删除倒数第N个链表--层序遍历
java·数据结构·算法·kotlin