题目大意

给你n个点的坐标和权值

问先在每一行选一个点再在每一列选一个没选过的点

求最大权值和

分析

可以想到将点转化为边,将两个坐标对应两个点

所以问题转化为选H+W个边

使得所有边的度都不为0

则最终这个图就会变为若干联通块

每个个联通块正好有一个环

我们将边权从大到小排序

然后并查集维护一下联通块信息和是否正好包含一个环即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define int long long
struct node {
int x,y,w;
};
node d[];
int n,m,H,W,fa[],is[];
long long Ans;
inline int sf(int x){return fa[x]==x?x:fa[x]=sf(fa[x]);}
inline bool cmp(const node a,const node b){return a.w>b.w;}
signed main(){
int i,j,k;
scanf("%lld%lld%lld",&m,&H,&W);
n=H+W;
for(i=;i<=n;i++)fa[i]=i;
for(i=;i<=m;i++){
scanf("%lld%lld%lld",&d[i].x,&d[i].y,&d[i].w);
d[i].y+=H;
}
sort(d+,d+m+,cmp);
for(i=;i<=m;i++){
int x=d[i].x,y=d[i].y;
if(sf(x)!=sf(y)){
if(is[sf(x)]&&is[sf(y)])continue;
is[sf(y)]|=is[sf(x)];
fa[sf(x)]=sf(y);
Ans+=d[i].w;
}else {
if(!is[sf(x)]){
is[sf(x)]=;
Ans+=d[i].w;
}
}
}
printf("%lld\n",Ans);
return ;
}

jsc2019_qualE Card Collector的更多相关文章

  1. HDOJ 4336 Card Collector

    容斥原理+状压 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  2. HDU 4336:Card Collector(容斥原理)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Special Judge Problem Descriptio ...

  3. Card Collector(HDU 4336)

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. hdu4336 Card Collector 状态压缩dp

    Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  5. HDU 4336 Card Collector(动态规划-概率DP)

    Card Collector Problem Description In your childhood, do you crazy for collecting the beautiful card ...

  6. HDU 4336 Card Collector 期望dp+状压

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Time Limit: 2000/1000 MS (Java/O ...

  7. 【HDU4336】Card Collector(Min-Max容斥)

    [HDU4336]Card Collector(Min-Max容斥) 题面 Vjudge 题解 原来似乎写过一种状压的做法,然后空间复杂度很不优秀. 今天来补一种神奇的方法. 给定集合\(S\),设\ ...

  8. 【HDU4336】Card Collector (动态规划,数学期望)

    [HDU4336]Card Collector (动态规划,数学期望) 题面 Vjudge 题解 设\(f[i]\)表示状态\(i\)到达目标状态的期望 \(f[i]=(\sum f[j]*p[j]+ ...

  9. HDU 4336——Card Collector——————【概率dp】

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

随机推荐

  1. 应用安全-Web安全-注入篇

    asp站点 ()and = 和 and =)服务器类型判断(ACCESS MSSQL) http://URL.asp?id=24 and (select count(*) from sysobject ...

  2. 第七周实验报告&课程总结

    一.完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 代码: public cla ...

  3. 旧接口注册LED字符驱动设备(静态映射)

    #include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module ...

  4. R语言基础篇——数据读写

    1.键盘输入数据(适合小数据集) #创建一个指定模式但不含数据的变量 mydata<-data.frame(age=numeric(0),gender=character(0),weight=n ...

  5. 最好用的 Kafka Json Logger Java客户端,赶紧尝试一下

    最好用的 Kafka Json Logger Java客户端. slf4j4json 最好用的 Kafka Json Logger 库:不尝试一下可惜了! Description 一款为 Kafka ...

  6. C# Lodop与C-Lopdop选择打印机

    原文:https://www.cnblogs.com/huaxie/p/9766886.html https://www.cnblogs.com/huaxie/p/10857490.html http ...

  7. CentOS7搭建Flume与Kafka整合及基础操作与测试

    前提 已完成Kafka的搭建,具体步骤参照CentOS7搭建Kafka单机环境及基础操作 Flume安装 下载 wget http://mirrors.tuna.tsinghua.edu.cn/apa ...

  8. 2018-2-13-Windows-10-16251-添加的-api

    title author date CreateTime categories Windows 10 16251 添加的 api lindexi 2018-2-13 17:23:3 +0800 201 ...

  9. linux--基础知识1

    #进入终端窗口,root命令提示符#,普通用户登陆提示符$,切换终端用户 ctrl+shift+F2,退出终端命令exit #init 0 关机  reboot 重启  ls查看当前目录下文件  ls ...

  10. 2018-09-25-weekly

    Algorithm 两数相加 What 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. How 两个链表长度相同的部分,对位相加, ...