思路
给出的操作序列就是最优操作序列
code
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3+5;
int n, m, ans, cnt, val[N], a[N];
int vis[N];
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> val[i];
for(int i = 1; i <= m; i++)
{
int x, pos;
cin >> x;
if(!vis[x])
{
vis[x] = 1;
a[++cnt] = x;
}
for(int j = 1; j <= cnt; j++)
{
if(x == a[j])
{
pos = j;
break;
}
ans += val[a[j]];
}
for(int j = pos; j >= 2; j--)
a[j] = a[j-1];
a[1] = x;
}
cout << ans << endl;
return 0;
}