传送门


费用流会 T T T,但是没试过 H K HK HK之类的

STD

设武器作用于 x , y x,y x,y两个人(如果 k = 1 k=1 k=1那么令 x = y x=y x=y),收益为 w w w

我们在 x , y x,y x,y之间连一条边权为 w w w的边

那么显然,对于一个 n n n个点的连通块,如果选了 n n n条边

刚好就是一棵树加上一条边刚好成环(基环树)

刚好这个连通块内每个点都可以占据一条边(每个人都有武器)

那么每次都贪心的选择最大边加进连通块

除非这条边连接起来连通块会大于 n n n条边。

证明

设方案 e e e某一次抉择中没有选择最大边 k k k

Ⅰ . Ⅰ. Ⅰ.现在加入最大边 k k k,如果不发生冲突,显然更优秀

Ⅱ . Ⅱ. Ⅱ.如果发生冲突,有两种情况

①最大边 k k k连接的是一个基环树中的点,那么显然断开这棵树的任意一条边填自己更优秀

②最大边 k k k连接的是两个基环树,同上,断开任何一条边会更优秀

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e5+10;
struct p{int x,y,w;bool operator < (const p&tmp )    const{return w>tmp.w;}
}e[maxn]; int pre[maxn],n,m,flag[maxn];
int find(int x){ return x==pre[x]?x:pre[x]=find( pre[x] ); }
signed main()
{cin >> n >> m;for(int i=1;i<=n;i++) pre[i] = i;for(int i=1;i<=m;i++){int k; cin >> k;if( k==1 ) cin >> e[i].x >> e[i].w,e[i].y = e[i].x;else   cin >> e[i].x >> e[i].y >> e[i].w;}sort( e+1,e+1+m );int ans = 0;for(int i=1;i<=m;i++){int fl = find( e[i].x ), fr = find( e[i].y );if( fl==fr )//在一个连通块{if( !flag[fl] )   ans += e[i].w, flag[fl] = 1; }else{if( flag[fl]&&flag[fr] )  continue;//都有环else if( !flag[fl]&&!flag[fr] )//都没有环,合并也不会有环 {ans += e[i].w;pre[fl] = fr;}    else    ans += e[i].w,pre[fl] = fr, flag[fr] = 1;} }cout << ans;
}

2021牛客训练营 F.魏迟燕的自走棋(贪心并查集)相关推荐

  1. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

  2. 2021牛客寒假算法基础集训营4 F. 魏迟燕的自走棋

    链接 https://ac.nowcoder.com/acm/contest/9984/F 题意 n n n 个人, m m m 个物品,每个物品有一个权值,每个物品可以分给 1 1 1 或 2 2 ...

  3. 【牛客 - 1080B】tokitsukaze and Hash Table(STLset,并查集,Hash)

    题干: 链接:https://ac.nowcoder.com/acm/contest/1080/B 来源:牛客网 tokitsukaze有n个数,需要按顺序把他们插入哈希表中,哈希表的位置为0到n-1 ...

  4. 2021牛客训练营5 B 比武招亲(上)(组合数学)

    LINK 直接考虑数字 i i i作为最大值多少次,作为最小值多少次 最大值加,最小值减,即可得解. 首先 m m m个数字先选出一个 x x x作为最大值,相当于求 [ 1 , x − 1 ] [1 ...

  5. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  6. 2021牛客寒假算法基础集训营4

    九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...

  7. 2021牛客暑期多校训练营9

    2021牛客暑期多校训练营9 题号 题目 知识点 A A Math Challenge B Best Subgraph C Cells D Divide-and-conquer on Tree E E ...

  8. 2021牛客暑期多校训练营5

    2021牛客暑期多校训练营5 题号 题目 知识点 A Away from College B Boxes 概率 C Cheating and Stealing D Double Strings 线性d ...

  9. 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...

最新文章

  1. 从源码分析DEARGUI之让怪物随机动起来
  2. 5G 标准 — 3GPP
  3. noip2016 换教室
  4. 使用 VS2005 编译 directshow sample 时链接错误
  5. linux内核申请内存的方法,Linux内核空间的内存申请常用函数
  6. 今天修改了数据库结构,XSD文件都要重新生成,郁闷!
  7. 开源在线文档编辑工具_开源暑期实习,在线教育新工具等
  8. 苹果Apple Watch样机Mockups素材,你用过吗?
  9. 建立密钥,远程登录LINUX----ssh-keygen
  10. 简单、易用的光盘封装工具-MKISO纪念版(V1.0.2.0)发布日志
  11. 快速取得三位数的个位,十位,百位
  12. html怎么把新闻列表放在右边,div+css实现简洁、清晰的新闻列表样式(浮动使日期靠右)...
  13. 用Hexo制作自己的静态博客
  14. 网站建设合同- 范文格式
  15. 工地门禁实名制考勤管理系统
  16. 刻度尺组件vue-scale,并绑定输入框
  17. Power BI 客户端 安装 错误
  18. windows11修改开机密码为空解决方案
  19. 高德地图自定义贴图图层
  20. 优思学院:ILSSI 的六西格玛黑带大师(MBB)

热门文章

  1. 订单薄与发现冰山订单
  2. ThreeJS-太阳球围绕旋转(二十四)
  3. 年薪100万?纯属忽悠!!但年薪60万真不是个梦
  4. 【无标题】UOS显示仓库https://professional-packages.chinauos.com/desktop-professional 没有数字签名
  5. 前端js实现表格数据的上移下移
  6. 噩梦的开始:动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
  7. 猫眼top100部高分电影spider
  8. RabbitMQ学习之旅
  9. excel和python建模_如何用Python提高办公(Excel)效率?
  10. RCWL-0516微波雷达模块检测人体移动(发光二极管)