比赛 |
集训 |
评测结果 |
TTTTAAATTTA |
题目名称 |
兔子集团军 |
最终得分 |
36 |
用户昵称 |
Hollow07 |
运行时间 |
14.103 s |
代码语言 |
C++ |
内存使用 |
23.97 MiB |
提交时间 |
2025-07-03 12:46:39 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MXN=0x3f3f3f3f3f3f3f3f;
const ll MINX=-0x3f3f3f3f3f3f3f3f;
ll n;
int main() {
freopen("RRR.in","r",stdin);
freopen("RRR.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n;
vector<int> c(n+1),v(n+1),fa(n+1);
for (int i=1;i<=n;i++) cin>>c[i];
for (int i=1;i<=n;i++) cin>>v[i];
for (int i=1;i<=n;i++) cin>>fa[i];
vector<int> css;
for (int i=1;i<=n;i++) css.push_back(c[i]);
sort(css.begin(),css.end());
auto last=unique(css.begin(),css.end());
css.erase(last,css.end());
ll num_css=css.size();
vector<ll> minx(num_css,MXN);
vector<ll> maxx(num_css,MINX);
for (int i=1;i<=n;i++){
ll colorx=lower_bound(css.begin(),css.end(),c[i])-css.begin();
if (i<minx[colorx]) minx[colorx]=i;
if (i>maxx[colorx]) maxx[colorx]=i;
}
vector<ll> lar(n+1);
vector<ll> rar(n+1);
for (int i=1;i<=n;i++){
ll colorx=lower_bound(css.begin(),css.end(),c[i])-css.begin();
lar[i]=minx[colorx];
rar[i]=maxx[colorx];
}
ll ans=MXN;
for (int l=1;l<=n;l++){
ll cminl=MXN;
ll cmaxr=MINX;
ll current_cost=0;
for (int r=l;r<=n;r++){
if (lar[r]<cminl) cminl=lar[r];
if (rar[r]>cmaxr) cmaxr=rar[r];
ll d=r-l+1;
current_cost+=v[r]*fa[d]*fa[d];
if (cminl>=l&&cmaxr<=r){
if (current_cost<ans) ans=current_cost;
}
}
}
if (ans==MXN) ans=0;
cout<<ans<<endl;
return 0;
}