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;

}

相关推荐
木卫二号Coding3 分钟前
Python-文件拷贝+文件重命名+shutil+记录
开发语言·python
leaves falling3 分钟前
冒泡排序(基础版+通用版)
数据结构·算法·排序算法
bubiyoushang88821 分钟前
基于Q-learning的路径规划MATLAB仿真程序实现
开发语言·matlab
C雨后彩虹26 分钟前
无向图染色
java·数据结构·算法·华为·面试
FAFU_kyp31 分钟前
Rust 结构体(struct)
开发语言·后端·rust
坚持就完事了33 分钟前
扫描线算法
算法
努力写代码的熊大34 分钟前
深入探索C++关联容器:Set、Map、Multiset与Multimap的终极指南及底层实现剖析
开发语言·c++
鱼跃鹰飞36 分钟前
Leetcode尊享面试100题:252. 会议室
算法·leetcode·面试
程序员-King.37 分钟前
二分查找——算法总结与教学指南
数据结构·算法
J_liaty38 分钟前
Java工程师的JVM入门教程:从零理解Java虚拟机
java·开发语言·jvm