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;

}

相关推荐
豆约翰7 小时前
Z字形扫描ccf
java·开发语言·算法
Tipriest_7 小时前
C++ Python使用常用库时如何做欧拉角 ⇄ 四元数转换
c++·python·四元数·欧拉角
Salt_07287 小时前
DAY 35 文件的规范拆分和写法
python·算法·机器学习
小尧嵌入式7 小时前
C语言中的面向对象思想
c语言·开发语言·数据结构·c++·单片机·qt
lionliu05197 小时前
执行上下文 (Execution Context)
开发语言·前端·javascript
nbsaas-boot7 小时前
JWT 与 Session 的实用场景分析:从架构边界到工程落地
java·开发语言·架构
Tim_107 小时前
【C++入门】03、C++整型
java·开发语言·jvm
风筝在晴天搁浅7 小时前
代码随想录 109.冗余连接Ⅱ
算法
业精于勤的牙7 小时前
浅谈:算法中的斐波那契数(三)
算法·职场和发展
fpcc7 小时前
跟我学C++中级篇——循环展开的分析
c++·优化