jsc2019_qualE Card Collector
题目大意
给你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的更多相关文章
- HDOJ 4336 Card Collector
		容斥原理+状压 Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ... 
- HDU 4336:Card Collector(容斥原理)
		http://acm.split.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Special Judge Problem Descriptio ... 
- Card Collector(HDU 4336)
		Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ... 
- hdu4336 Card Collector 状态压缩dp
		Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ... 
- HDU 4336 Card Collector(动态规划-概率DP)
		Card Collector Problem Description In your childhood, do you crazy for collecting the beautiful card ... 
- HDU 4336 Card Collector 期望dp+状压
		题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Time Limit: 2000/1000 MS (Java/O ... 
- 【HDU4336】Card Collector(Min-Max容斥)
		[HDU4336]Card Collector(Min-Max容斥) 题面 Vjudge 题解 原来似乎写过一种状压的做法,然后空间复杂度很不优秀. 今天来补一种神奇的方法. 给定集合\(S\),设\ ... 
- 【HDU4336】Card Collector (动态规划,数学期望)
		[HDU4336]Card Collector (动态规划,数学期望) 题面 Vjudge 题解 设\(f[i]\)表示状态\(i\)到达目标状态的期望 \(f[i]=(\sum f[j]*p[j]+ ... 
- HDU 4336——Card Collector——————【概率dp】
		Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ... 
随机推荐
- python控制流-流程控制语句
			一.if语句 if 语句的子句(也就是紧跟 if 语句的语句块), 将在语句的条件为 True 时执行.如果条件为 False,子句将跳过. 在英文中,if 语句念起来可能是“:如果条件为真,执行子句 ... 
- redis两种持久化的方法
			Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(diff ... 
- pyhton常用快捷键
			常用快捷键 快捷键 功能 Ctrl + Q 快速查看文档 Ctrl + F1 显示错误描述或警告信息 Ctrl + / 行注释(可选中多行) Ctrl + Alt + L 代码格式化 Ctrl + A ... 
- java 线程池(线程的复用)
			一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池.使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动 ... 
- JVM调优 — 命令大全(jps jstat jmap jhat jstack jinfo)(转)
			运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ... 
- basename函数不能获取url路径中文文件名的问题
			basename basename() 函数返回路径中的文件名部分. 语法 basename(path,suffix) 参数 描述 path 必需.规定要检查的路径. suffix 可选.规定文件扩展 ... 
- 浅谈原生JavaScript的动画和特效
			一.JavaScript中的动画原理 动画效果的实现总的来说可分为两种,一种是利用纯css实现,该方法在css3成熟后广泛应用:另外一种是通过JavaScript(或者一些封装的库如jQuery的an ... 
- frontend-dev面试
			1.笔试题 vuex 存储的数据为null或者undefined是为啥? 1.伸缩布局 flex规则 2.横向布局的实现方法有多少? 3.说一说 flex:1; 的含义 / 说一说flex:1 1 3 ... 
- leetcode x进制数 python3
			不少题目都是实现吧10进制数转换成x进制数,实际上都是一个套路,下面是7进制的,想换成什么进制,把7替换成相应数字即可,输出的是字符串 16,32进制这种有特殊要求的转不了,其他的应该通用 class ... 
- 12 | 为什么我的MySQL会“抖”一下? 学习记录
			<MySQL实战45讲>12 | 为什么我的MySQL会“抖”一下? 学习记录 http://naotu.baidu.com/file/15aa54cab2fa882c6a2a1dd52e ... 
