求助 改了下题解的代码 wa#20了
  • 板块学术版
  • 楼主ruye
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/18 01:55
  • 上次更新2024/1/18 02:05:50
查看原帖
求助 改了下题解的代码 wa#20了
757864
ruye楼主2024/1/18 01:55
#include <bits/stdc++.h> // By Lucky Ox
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define int long long
#define double long double
#define __int128 i128
#define endl '\n'
#define pii pair<int, int> 
#define INF 0x3f3f3f3f3f3f3f3f
#define npos string::npos
#define mod 1000000000000002493
int lcm(int x, int y){return x * y / __gcd(x, y);}
int qmi(int a, int k, int p){int res = 1;while(k){if(k & 1) res =  res * a % p;k >>= 1;a = a * a % p;}return res;}
//__builtin_popcount()返回括号内数的二进制表示形式中1的个数;  __builtin_ctz();返回括号内数的二进制表示形式中末尾0的个数;

int n[5];
vector<int> v[5];
map<pii, bool> mp[5];
signed main() {
    IOS;
    for(int i = 1; i <= 4; i ++ ) cin >> n[i];
    for(int i = 1; i <= 4; i ++ ) 
        for(int j = 1; j <= n[i]; j ++ ) {
            int x;
            cin >> x;
            v[i].push_back(x);
        }
    for(int i = 2; i <= 4; i ++ ) {
        int m;
        cin >> m;
        for(int j = 1; j <= m; j ++ ) {
            int x, y;
            cin >> x >> y;
            mp[i][{x, y}] = 1;
        }
    }

    for(int i = 2; i <= 4; i ++ ) {
        sort(v[i - 1].begin(), v[i - 1].end());
        for(int j = 0; j < n[i]; j ++ ) {
            int k = 0;
            while(k < n[i - 1] && mp[i][{k + 1, j + 1}]) k ++ ;
            
            if(k == n[i - 1])
                v[i][j] = 1 << 30;
            else
                v[i][j] += v[i - 1][k];
        }
    }
    sort(v[4].begin(), v[4].end());
    cout << (v[4][0] > 1e9 ? -1 : v[4][0]) << endl;
    return 0;
}
2024/1/18 01:55
加载中...