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;
}
posted @ 2016-09-20 22:22  see_you_later  阅读(203)  评论(0编辑  收藏  举报