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;

}

相关推荐
wen__xvn5 分钟前
基础数据结构第08天:栈(实战篇)
数据结构·c++·算法
玄鱼殇5 分钟前
前端排序算法
算法·排序算法
MediaTea8 分钟前
Python:MRO 解密 —— C3 线性化算法
java·开发语言
sunfove10 分钟前
Python小游戏:在 2048 游戏中实现基于线性插值(Lerp)的平滑动画
开发语言·python·游戏
tqs_1234513 分钟前
倒排索引数据结构
java·前端·算法
2501_9445264215 分钟前
Flutter for OpenHarmony 万能游戏库App实战 - 抽牌游戏实现
android·开发语言·python·flutter·游戏
a程序小傲16 分钟前
听说前端又死了?
开发语言·前端·mysql·算法·postgresql·深度优先
副露のmagic17 分钟前
python基础复健
python·算法
bclshuai20 分钟前
深度学习算法辅助股票分析
人工智能·深度学习·算法
bkspiderx21 分钟前
RabbitMQ 技术指南(C/C++版)
c语言·c++·rabbitmq