首页 > 其他分享 >abc270 F - Transportation

abc270 F - Transportation

时间:2023-01-09 11:14:04浏览次数:43  
标签:Transportation get int 源点 st edges abc270 ans

题意:

有 \(n\) 个点,你可以花费 \(x_i\) 在点 \(i\) 上建一个机场、花费 \(y_i\) 在点 \(i\) 上建一个港口、或花费 \(w_i\) 建一条边 \(u_i-v_i\)

如果两个点都有机场,那它们俩连通。港口同理。问使图成为连通图的最小花费

\(n\le 2e5\)

思路:

超级源点 \(n+1\) 表示机场,超级源点 \(n+2\) 表示港口,跑最小生成树。然而这俩源点不一定要都连通,咋办?枚举四种方案即可,在各方案中能用的边和对两个超级源点连通性的要求不同

void sol() {
    int n, m; cin >> n >> m;
    vector<array<int, 3> > edges; // w,u,v
    for(int i = 1; i <= n; i++) {
        int w; cin >> w;
        edges.push_back({w, i, n + 1});
    }
    for(int i = 1; i <= n; i++) {
        int w; cin >> w;
        edges.push_back({w, i, n + 2});
    }
    while(m--) {
        int u, v, w; cin >> u >> v >> w;
        edges.push_back({w, u, v});
    }
    
    sort(edges.begin(), edges.end());
    ll ans = 1e18;
    for(int st = 0; st < 4; st++) {
        iota(p, p + N, 0);
        ll res = 0, need = n - 1 + (st & 1) + (st >> 1 & 1);
        for(auto &[w, u, v] : edges) {
            if(v == n + 1 && !(st & 1) || v == n + 2 && !(st >> 1 & 1))
                continue; //不该用这条边
            if(get(u) != get(v))
                p[get(u)] = get(v), res += w, need--;
        }
        if(!need) ans = min(ans, res);
    }
    cout << ans;
}

标签:Transportation,get,int,源点,st,edges,abc270,ans
From: https://www.cnblogs.com/wushansinger/p/17036394.html

相关文章

  • CF724E Goods transportation
    链接:https://www.luogu.com.cn/problem/CF724E题目描述:有\(n\)个城市,每个城市生产了\(p_{i}\)个货物,最多可以卖掉\(s_{i}\)个货物。对于每两个城市\((i,j)\),如果\(i<j\),则......
  • 题解 ABC270G【Sequence in mod P】
    postedon2022-10-2013:58:54|under题解|source有个地方写错了,改一下problemSoso有一个无穷序列\(\{X_i\}\)定义如下:\[X_i=\begin{cases}S,&(i=0)\\(A\cdo......
  • Transportation(最小生成树,虚拟节点)
    题意有\(N\)个岛屿,现在需要将它们联通起来。可以选择在岛上建立飞机场,花费为\(X_i\);也可以在岛上建立港口,花费为\(Y_i\);还可以在两个岛屿\(A_i\)和\(B_i\)之间修路,花费......
  • ABC-270 F - Transportation(kruskal)
    ABC-270F-Transportation(kruskal)考虑等价转换,建立两个虚点(分别表示airport和harbor的中转站)。这样就可以把点统一为边权问题。对于操作1和操作2,就是等价于向虚点连边......
  • ABC270-d
    题目首先贪心是行不通的,考试的时候打了贪心,挂了......举个反例:10234贪心枚举答案为4,但若高桥先选3,最大值为6。其实考试的时候想到了dp,但是不会打悲因为青木也......
  • abc270
    \(\textbf{G.}\)当\(a=0\)时有\(x_i=\begin{cases}s&,i=0\\b&,i\geq1\end{cases}\).所以可以\(\mathcal{O}(1)\)计算.当\(a=1\)时有\(x_......
  • ABC270D(fake)
    ……你家E比D水……题意有$N$颗石子,每次可以拿$A_1$或$A_2$或……或$A_K$颗石子。Takahashi是先手,Snuke是后手。他们都想让自己取的石子数尽......
  • F2F-Discussing transportation
    Doyouliveintianjing?Inthepast,whatkindoftraffic/transportationdoyouusuallychoose,whenyouplantotravelsomewhere?在高峰时段inpeakhourHav......