zoukankan      html  css  js  c++  java
  • [CF959B]Mahmoud and Ehab and the message题解

    超级大模拟
    直接用map吧string对应到编号上来,然后在开个数组把每个编号对应到每个可以互相转化区块上来,预处理出区块的最小值,使用时直接取最小是即可

    代码

    #include <cstdio> 
    #include <iostream>
    #include <map>
    #define ll long long
    #define min(a,b) ((a<b)?a:b)
    
    using namespace std;
    
    inline ll read(){
        ll x = 0; int zf = 1; char ch = ' ';
        while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
        if (ch == '-') zf = -1, ch = getchar();
        while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
    }
    
    map<string, int> mp;
    string s[100005];
    int a[100005];
    int dy[100005];
    int val[100005];
    
    int main(){
        int n = read(), k = read(), m = read();
        for (int i = 1; i <= n; ++i)
            cin >> s[i];
        for (int i = 1; i <= n; ++i)
            a[i] = read(), mp[s[i]] = i;
        int q;
        for (int i = 1; i <= k; ++i)
            val[i] = 2147483647;
        for (int i = 1; i <= k; ++i){
            q = read();
            for (int j = 0; j < q; ++j){
                int t = read();
                dy[t] = i, val[i] = min(val[i], a[t]);
            }
        }
        string c; ll ans = 0;
        for (int i = 1; i <= m; ++i){
            cin >> c;
            ans += val[dy[mp[c]]];
        }
        printf("%lld", ans);
        return 0;
    }
    
  • 相关阅读:
    使用ADO.NET查询和操作数据
    使用ADO.NET查询和访问数据库
    连接查询和分组查询
    SQL
    HTML5基础
    使用Java理解程序逻辑错题
    幸运抽奖项目
    吃货联盟项目
    人机猜拳项目
    JavaDoc注释
  • 原文地址:https://www.cnblogs.com/linzhengmin/p/10895897.html
Copyright © 2011-2022 走看看