CodeForces 665B 【水-暴力】
题意(来自网络):
现在有k件商品,每个商品的位置已经告诉你了
现在有n个人,每个人有m个需求,每个需求就是要把第a[i][j]个物品拿到第一个位置来
他的代价是pos[a[i][j]]
问你所有代价是多少
思路:
就是每次+,每次调整,还有滚动数组这种不错欸~
#include <bits/stdc++.h>
using namespace std;
typedef __int64 LL;
int pos[2][110];
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
int s=0;
for(int i=1;i<=k;i++)
scanf("%d",&pos[s][i]);
int ans=0,x;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf("%d",&x);
for(int ii=1;ii<=k;ii++)
if(pos[s][ii]==x)
ans+=ii;
s=1-s;
int num=1;
pos[s][num++]=x;
for(int ii=1;ii<=k;ii++)
{
if(pos[1-s][ii]!=x)
pos[s][num++]=pos[1-s][ii];
}
}
}
printf("%d\n",ans);
return 0;
}