• [ICPC2019西安E] Flow


    [ICPC2019西安E] Flow - 贪心

    Description

    给出一个有向简单图,顶点 (1) 到顶点 (n) 之间有若干条长度相同、互不相交的路径;每条路径具有容量,一次操作可以将某条边容量减一而另一条边容量加一,问最少多少次操作后可以达到最大流量?

    Solution

    将每条链上的各权值升序排序,然后每条链对应位置加在一起,当作一条链处理

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    const int N = 200005;
    
    int n, m;
    
    vector<pair<int, int>> g[N];
    vector<int> a[N];
    int ind;
    
    void dfs(int p)
    {
        if (p != n)
        {
            for (auto [q, w] : g[p])
            {
                if (p == 1)
                    ++ind;
                a[ind].push_back(w);
                dfs(q);
            }
        }
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
        cin >> n >> m;
        int avg = 0;
        for (int i = 1; i <= m; i++)
        {
            int u, v, w;
            cin >> u >> v >> w;
            g[u].push_back({v, w});
            avg += w;
        }
    
        dfs(1);
        int len = a[1].size();
        avg /= len;
    
        for (int i = 1; i <= ind; i++)
            sort(a[i].begin(), a[i].end());
        int ans = 0;
        for (int i = 0; i < len; i++)
        {
            int sum = 0;
            for (int j = 1; j <= ind; j++)
                sum += a[j][i];
            if (sum < avg)
                ans += avg - sum;
        }
        cout << ans << endl;
    }
    
  • 相关阅读:
    简介anaconda下的jupyter notebook的代码分块运行
    此文件的签名已损坏或无效或360下载提示下载失败解决办法
    Java基础加强
    XML
    Servlet
    Tomcat
    json和跨域
    jQuery的ajax
    ajax请求状态码 以及 页面请求状态码
    ajax 基础
  • 原文地址:https://www.cnblogs.com/mollnn/p/14567172.html
Copyright © 2020-2023  润新知