zoukankan      html  css  js  c++  java
  • Codeforce500C New Year Book Reading

    题意:给你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;
    }
  • 相关阅读:
    AbsoluteLayout 相框
    Cursor getContentResolver
    Diary DiaryDbAdapter 日记本程序
    Linkify
    Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
    exampleuse SharedPreferences
    Gallery
    AbsoluteLayout xiantu
    PRD
    android 拨打电话 号码判断
  • 原文地址:https://www.cnblogs.com/Noevon/p/7277224.html
Copyright © 2011-2022 走看看