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;

}

相关推荐
Algebraaaaa1 分钟前
为什么线程阻塞要用.join而不是.wait
java·c++·python
巴拉巴拉~~2 分钟前
Flutter 通用滑块组件 CommonSliderWidget:单值 / 范围 + 刻度 + 标签 + 样式自定义
开发语言·前端·javascript
Knight_AL4 分钟前
深入解析 JVM 垃圾回收算法:经典 vs 新型 GC 算法
jvm·算法
是苏浙4 分钟前
零基础入门Java之设计图书管理系统
java·开发语言
墨雪不会编程11 分钟前
C++内存管理深度剖析
java·开发语言·c++
万法若空24 分钟前
【wxWidgets教程】控件基础知识
c++·gui·wxwidgets·事件处理
就起这名行不行24 分钟前
一天训练即SOTA!LLaVA-1.5:多模态AI的“性价比之王”全解析
算法
yuer202527 分钟前
我把 GPT 当成 Runtime 用:只用一个客户端,跑一个可控、可审计的投资决策 DEMO
算法
鲅鱼饺子28 分钟前
PyTorch|BatchNorm 的两种方差
算法
栀秋66634 分钟前
面试常考的最长递增子序列(LIS),到底该怎么想、怎么写?
前端·javascript·算法