zoukankan      html  css  js  c++  java
  • Codeforces Round #546 (Div. 2) D. Nastya Is Buying Lunch

    题意:

    长度为n的数组{pi},m对关系(a,b),如果a正好在数组中位于b的前一个位置,则可以交换a和b,问最多可以让pn的位置往前移动多少

    题解:

    如果pk能与pn交换并更新答案,它肯定能和pn以及中间所有不能更新答案的位置的数字交换,统计这样可以更新答案的pk的个数

    #include <bits/stdc++.h>
    //#pragma comment(linker, ”/STACK:36777216“)
               
    using namespace std;
               
    typedef long long ll;
    #define mp make_pair
    #define pb push_back
    #define x first
    #define y second
    #define all(a) a.begin(), a.end()
    #define db long double
    
    int n, m;
    vector<int> a, was;
    vector<vector<int> > g;
    
    int main(){
        //freopen("input.txt", "r", stdin);
        //freopen("output.txt", "w", stdout);
        ios_base::sync_with_stdio(0); cin.tie(0);
        cin >> n >> m;
        a.resize(n);
        g.resize(n);
        was.resize(n);
        for (int i = 0; i < n; i++) cin >> a[i], a[i]--;
        for (int i = 0; i < m; i++){
            int w1, w2;
            cin >> w1 >> w2;
            w1--; w2--;
            g[w1].pb(w2);
        }
    
        reverse(all(a));
        int ans = 0;
    
        for (int i = 0; i < n; i++) was[i] = 0;
        was[a[0]] = 1;
        int cnt = 1;
        for (int i = 1; i < n; i++){
            int cnt2 = 0;
            for (int to : g[a[i]]){
                if (was[to]) cnt2++;
            }
            if (cnt == cnt2){
                ans++;
            } else {
                was[a[i]] = 1;
                cnt++;
            }
        }
    
        cout << ans;
    }
  • 相关阅读:
    python自定义线程池
    sudo: ulimit: command not found
    HTTP长连接、短连接使用及测试
    5分钟上手:本地开发环境启动HTTPS
    Python复杂对象转JSON
    Python自定义注解
    gcc makefile
    Ubuntu 13.10 安装 ia32-lib
    vim扩展配置
    python异常类型
  • 原文地址:https://www.cnblogs.com/hyfer/p/10534558.html
Copyright © 2011-2022 走看看