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;

}

相关推荐
IT=>小脑虎14 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
nbsaas-boot14 小时前
Go vs Java 的三阶段切换路线图
java·开发语言·golang
码农小韩14 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
小L~~~14 小时前
绿盟校招C++研发工程师一面复盘
c++·面试
微露清风14 小时前
系统性学习C++-第十九讲-unordered_map 和 unordered_set 的使用
开发语言·c++·学习
BBBBBAAAAAi14 小时前
Claude Code安装记录
开发语言·前端·javascript
毕设源码-钟学长14 小时前
【开题答辩全过程】以 基于Java的慕课点评网站为例,包含答辩的问题和答案
java·开发语言
_Lzk666888_14 小时前
洛谷用户2002780求关注
c++·其他
maozexijr14 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
wen__xvn14 小时前
第 34 场 蓝桥·算法入门赛·百校联赛
算法