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;

}

相关推荐
DougLiang17 分钟前
关于easyexcel动态下拉选问题处理
java·开发语言
mochensage24 分钟前
CSP信奥赛C++常用系统函数汇总
c++·信奥
mochensage26 分钟前
C++信息学竞赛中常用函数的一般用法
java·c++·算法
fpcc29 分钟前
跟我学c++中级篇——多线程中的文件处理
c++
chengooooooo32 分钟前
leetcode Top100 238. 除自身以外数组的乘积|数组系列
算法·leetcode
GUIQU.1 小时前
【每日一题 | 2025年6.2 ~ 6.8】第16届蓝桥杯部分偏简单题
算法·蓝桥杯·每日一题
全职计算机毕业设计1 小时前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
5:001 小时前
云备份项目
linux·开发语言·c++
weixin_527550402 小时前
初级程序员入门指南
javascript·python·算法
笨笨马甲2 小时前
Qt Quick模块功能及架构
开发语言·qt