• Codeforces Round #588 (Div. 2)


    题目链接

    C:
    本题可以直接暴力求解,类比八皇后问题,使每个点分别对应一个值,分别判断有几条边能够满足即可

    #include<bits/stdc++.h>
    using namespace std;
    #define ms(x,y) memset(x, y, sizeof(x))
    #define lowbit(x) ((x)&(-x))
    #define sqr(x) ((x)*(x))
    typedef long long LL;
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    bool vis[8][8];
    int col[8];
    
    void run_case() {
        int n, m;
        cin >> n >> m;
        vector<pii> a(m);
        for(int i = 0; i < m; ++i)
            cin >> a[i].first >> a[i].second;
        int ans = 0;
        function<void(int)> dfs = [&](int x) {
            if(x > n) {
                int cnt = 0;
                ms(vis, 0);
                for(int i = 0; i < m; ++i) {
                    if(vis[col[a[i].first]][col[a[i].second]]) continue;
                    vis[col[a[i].first]][col[a[i].second]] = vis[col[a[i].second]][col[a[i].first]] = true;
                    cnt++;
                }
                ans = max(ans, cnt);
                return;
            }
            for(int i = 1; i <= 6; ++i) {
                col[x] = i;
                dfs(x+1);
            }
        };
        dfs(1);
        cout << ans;
    }
    
    
    int main() {
        ios::sync_with_stdio(false), cin.tie(0);
        cout.flags(ios::fixed);cout.precision(9);
        //int t; cin >> t;
        //while(t--)
        run_case();
        cout.flush();
        return 0;
    }
    

    D:
    读懂题意后也不难,至少有2个人是calm的,则集合中至少有2个人的knowledge是相等的,设为(x),然后再遍历,设(y)为当前的值,若(x&y==y),则说明(x geq y)(y)中拥有的knowledge(x)都有

    #include<bits/stdc++.h>
    using namespace std;
    #define ms(x,y) memset(x, y, sizeof(x))
    #define lowbit(x) ((x)&(-x))
    #define sqr(x) ((x)*(x))
    typedef long long LL;
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    
    void run_case() {
        int n; cin >> n;
        vector<LL> a(n), b(n), valid;
        map<LL, int> mp;
        for(auto &x: a) {
            cin >> x;
            mp[x]++;
        }
        for(auto &x: b) cin >> x;
        for(auto i: mp)
            if(i.second > 1)
                valid.push_back(i.first);
        LL ans = 0;
        for(int i = 0; i < n; ++i) {
            for(auto j: valid) {
                if((a[i]&j)==a[i]) {
                    ans += b[i];
                    break;
                }
            }
        }
        cout << ans;
    }
    
    
    int main() {
        ios::sync_with_stdio(false), cin.tie(0);
        cout.flags(ios::fixed);cout.precision(9);
        //int t; cin >> t;
        //while(t--)
        run_case();
        cout.flush();
        return 0;
    }
    
  • 相关阅读:
    完美数据迁移-MongoDB Stream的应用
    补习系列(3)-springboot中的几种scope
    补习系列(2)-springboot mime类型处理
    hdfs directory item limit
    git-format-patch
    SPARK-18560
    hdfs OutOfMemoryError
    hdfs 路径不支持‘:’
    java.io.UTFDataFormatException: encoded string too long:
    scala-maven-plugin excludes
  • 原文地址:https://www.cnblogs.com/GRedComeT/p/13052210.html
Copyright © 2020-2023  润新知