AtCoder Beginner Contest 252 D - Distinct Trio
找出三元组i,j,k(i<j<k,ai,aj,ak互不相等) 等价于找出ai,aj,ak(ai<aj<ak,i,j,k互不相等)
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 2e5+10; int sum[N]; unordered_map<int,int> cnt; vector<int> v; int main(){ int n,a; cin>>n; for(int i=1;i<=n;i++){ cin>>a; if(cnt[a]==0) v.push_back(a); cnt[a]++; } sort(v.begin(),v.end()); LL ans=0; int len=v.size(); for(int i=0;i<len;i++) sum[i+1]=sum[i]+cnt[v[i]]; for(int i=2;i<=len-1;i++) ans+=(LL)(sum[i]-sum[i-1])*sum[i-1]*(sum[len]-sum[i]); cout<<ans; return 0; }
本文作者:xhy666
本文链接:https://www.cnblogs.com/xhy666/p/16306723.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步