zoukankan      html  css  js  c++  java
  • [ICPC2019西安M] value

    [ICPC2019西安M] value

    Description

    给出N个A,B寻找一个集合使价值最大价值即为集合内A的和如果 i,j属于集合内并且 (i>1, j>1, i^k=j(k>1)) 则价值需要减去j的B值

    Solution

    对于每个非幂数,我们枚举它的所有幂,单独拎出来,因为不同部分的贡献是相互独立的

    对于每个非幂数的所有次幂,暴力枚举一遍选谁不选谁

    VP 时一开始居然想到 MST 上去了

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1e5 + 5;
    
    int n, a[N], b[N], v[N];
    
    int solve(vector<pair<int, int>> p)
    {
        int n = p.size();
        int ans = 0;
        for (int i = 0; i < (1 << n); i++)
        {
            bitset<20> s(i);
            int tmp = 0;
            for (int j = 0; j < n; j++)
                if (s[j])
                    tmp += p[j].first;
            for (int j = 0; j < n; j++)
                for (int k = 0; k < n; k++)
                    if (j > k && s[j] && s[k] && (j + 1) % (k + 1) == 0)
                        tmp -= p[j].second;
            ans = max(ans, tmp);
        }
        return ans;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> a[i];
        for (int i = 1; i <= n; i++)
            cin >> b[i];
        int ans = a[1];
        for (int i = 2; i <= n; i++)
        {
            if (v[i])
                continue;
            vector<pair<int, int>> vec;
            for (int j = i; j <= n; j *= i)
            {
                v[j] = 1;
                vec.push_back({a[j], b[j]});
            }
            ans += solve(vec);
        }
        cout << ans << endl;
    }
    
  • 相关阅读:
    dependencyManagement、parent与dependencies
    maven和gradle中,dependency和plugin的区别
    SpringMVC与Struts2区别
    RESTful风格与RESTful Api
    DBCP连接池配置参数
    js 函数的传值问题
    js 重载i
    js 对象与函数的区别
    子窗口 父窗口传值
    验证码
  • 原文地址:https://www.cnblogs.com/mollnn/p/14567223.html
Copyright © 2011-2022 走看看