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;

}

相关推荐
pkowner2 分钟前
若依分页问题及解决方法
java·前端·算法
呃呃本25 分钟前
算法题(栈)
算法
Peter·Pan爱编程31 分钟前
从 struct 到 class:封装与访问控制的真正意义
c++
通信小呆呆32 分钟前
基于 ADMM-MFOCUSS 的捷变频雷达扩展目标稀疏重构原理
算法·重构·信息与通信·信号处理·雷达
largecode38 分钟前
如何让电话显示店名?来电显示店铺名称,提升有效接通率
java·开发语言·spring·百度·学习方法·业界资讯·twitter
xuhaoyu_cpp_java38 分钟前
SpringMVC学习(五)
java·开发语言·经验分享·笔记·学习·spring
Aurorar0rua39 分钟前
CS50 x 2024 Notes C -11
c语言·开发语言·学习方法
Dlrb121140 分钟前
C语言-指针
c语言·开发语言
橙淮42 分钟前
Java数组与链表:特性对比与应用场景
数据结构·算法
炽烈小老头44 分钟前
【每天学习一点算法 2026/05/15】被围绕的区域
学习·算法·深度优先