码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforce500C New Year Book Reading

时间:2017-08-03 00:52:13      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:--   int   多重   force   ++   main   cin   style   cout   

题意:给你n本书的重量,m天读书的顺序,书是一堆在一起的,每次拿一本书要把去其他书搬下来,拿出这本书, 然后把这些书搬上去,读完这本书要把书放在最上面,问按照读书顺序最少要搬多重的书

题解:直接贪心就可以了,尽量靠前的书要放在上面,模拟一遍就可以,。。写错了一个地方,调了好久。

#include <bits/stdc++.h>
#define ll long long
#define maxn 100100
using namespace std;
stack<int>s;
map<int ,int >mp;
int w[maxn], d[maxn], temp[maxn];
int main(){
    int n, m, ans = 0, to, num = 0;
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>w[i];
    for(int i=1;i<=m;i++) cin>>d[i];
    for(int i=1;i<=m;i++)
        if(mp[d[i]] == 0) temp[num++] = d[i],mp[d[i]]=1;
    for(int i=num-1;i>=0;i--) s.push(temp[i]);
    n = s.size();
    num = 0;
    for(int i=1;i<=m;i++){
        while(1){
            to = s.top();s.pop();
            if(to == d[i]) break;
            temp[num++] = to;
            ans += w[to];
        }
        for(int j=num-1;j>=0;j--)
            s.push(temp[j]);
        num = 0;
        s.push(d[i]);
    }
    cout<<ans<<endl;
    return 0;
}

 

Codeforce500C New Year Book Reading

标签:--   int   多重   force   ++   main   cin   style   cout   

原文地址:http://www.cnblogs.com/Noevon/p/7277224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!