feat: 实现P11670题目的解法

添加算法逻辑来计算题目要求的答案,包括输入处理和结果计算
This commit is contained in:
Zengtudor 2025-10-22 16:29:14 +08:00
parent 40fbda7ec8
commit 7148637cb3

View File

@ -1,11 +1,47 @@
#include <algorithm>
#include <cstdint> #include <cstdint>
#include <cstdio>
#include <iostream> #include <iostream>
#include <istream> #include <istream>
#include <vector>
using ll = int64_t; using ll = int64_t;
ll n,ans;
std::vector<std::vector<ll>> anumcnt;
std::vector<ll> a;
int main(){ int main(){
std::iostream::sync_with_stdio(false); std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr); std::cin.tie(nullptr);
std::cin>>n;
a.resize(n+1);
anumcnt.resize(n+1);
for(ll i=1;i<=n;i++){
std::cin>>a[i];
anumcnt[a[i]].push_back(i);
}
for(ll i=1;i<=n;i++){
ll b,nans=0;
std::cin>>b;
if(a[i]==b){
ll N=i-1;
nans+=N*(N+1)/2;
N=n-i;
nans+=N*(N+1)/2;
// printf("a[%lld]==b[%lld], +=%lld\n",i,i,nans);
}
ans+=nans;
nans=0;
for(ll ai:anumcnt[b]){
ll l=std::min(ai,i);
ll r=std::min(n-ai+1,n-i+1);
nans += std::min(l,r);
}
// printf("b[%lld] l to r +=%lld\n",i,nans);
ans+=nans;
}
std::cout<<ans<<"\n";
} }