首页 > 其他分享 > 洛谷AT_jsc2019_qual_e Card Collector 题解

洛谷AT_jsc2019_qual_e Card Collector 题解

时间:2023-07-24 11:44:05浏览次数:47  
标签:洛谷 qual int 题解 fa return Collector Card

题目链接

Card Collector - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路

将每一行、每一列转化为点,第i行第j列的卡牌转化为i->j+m(m为行数)的有向边。

总共会抽取m+n(m为行数,n为列数)张牌,每个点的出度为1。结果图为基环森林;

那么题目就转化为求最大基环森林。

代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int N=100005;
 5 
 6 struct EDGE{
 7     int x,y,w;
 8 }edge[N];
 9 bool cmp(EDGE a, EDGE b){
10     return a.w>b.w;
11 }
12 
13 bool f[N*2];//每个联通块是否有环
14 int fa[N*2];
15 int find(int x){
16     if(fa[x]==x) return x;
17     return fa[x]=find(fa[x]);
18 }
19 
20 int main(){
21     int e,m,n;
22     scanf("%d %d %d", &e, &m, &n);
23     for(int i=1;i<=e;i++){
24         scanf("%d %d %d", &edge[i].x, &edge[i].y, &edge[i].w);
25         edge[i].y+=m;
26     }
27     sort(edge+1,edge+e+1,cmp);
28     for(int i=1;i<=n+m;i++) fa[i]=i;
29     long long ans=0;//需要开long long
30     for(int i=1;i<=e;i++){
31         int x=edge[i].x,y=edge[i].y,w=edge[i].w;
32         int p=find(x),q=find(y);
33         if(p==q&&!f[p]) ans+=w,f[p]=1;
34         else if(p!=q&&!(f[p]&f[q])){//不在同一连通块&&两个连通块不是都有环
35             f[q]=f[q]|f[p];//更新是否有环
36             fa[p]=q;
37             ans+=w;
38         }
39     }
40     cout<<ans;
41     return 0;
42 }

 

标签:洛谷,qual,int,题解,fa,return,Collector,Card
From: https://www.cnblogs.com/Idtwtei/p/17576837.html

相关文章

  • 牛客小白月赛 47 题解
    牛客小白月赛47A.牛牛的装球游戏标签暴力思路显然,答案为\(\pir^2l-[\frac{l}{2r}]*\frac{4\pir^3}{3}\)。时间复杂度为\(\mathcalO(1)\)。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;intT;doubleans,pi=3.141592653589;intt,h,r;int......
  • 国标GB28181视频平台LntonGBS(源码版)国标云服务平台对页面过多导致加载困难的问题解决
    LntonGBS国标视频云服务平台不仅支持无缝、完整接入内网或者公网的国标设备,在输出上,实现全平台、全终端输出。平台可将GB/T28181设备/平台推送的PS流转成ES流,并提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务,实现Web浏览器、手机浏览器、微信端、PC客户端等各终端无......
  • 【题解】Educational Codeforces Round 151(CF1845)
    VP战报:1h过了A,B,C,D然后被E罚坐1hrank:210th题解只有A-EA.ForbiddenInteger题目描述:你需要构造一个正整数序列,满足:对于\(i\),\(a_i\lek\)且\(a_i\not=x\)。\(\suma_i=n\)。如无法构造,输出NO,否则输出YES后,输出序列长度与序列中的每一个数。多测\(t\le......
  • AT_abc180_d 题解
    洛谷链接&Atcoder链接本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。题目简述现有\(STR\)和\(EXP\)两个变量,初始化分别为\(X\)和\(0\),可对变量\(STR\)做以下两种操作:将\(STR\)乘\(A\),并将\(EXP\)自加\(1\)。将\(STR\)加上\(B\),并将\(E......
  • P1387 最大正方形 题解
    注意细节通过二维前缀和判定矩形内是否全为1,计算和等于长度的平方就判断为是复杂度\(\Theta(n^2\log{n})\)#include<bits/stdc++.h>#defineN(int)(105)usingnamespacestd;intmp[N][N];ints[N][N];intn,m;boolcheck(intlenth){ for(inti=1;i+lenth......
  • Codeforces Round 886 (Div. 4) 题解 A - H
    A.ToMyCritics题目大意给定三个数,你可以挑俩数加起来,问这仨数有没有可能加起来大于等于\(10\).解题思路我们找其中最大的两个数相加与\(10\)比较即可。ACCode#include<iostream>#include<algorithm>#include<cstring>#defineendl'\n'#defineiosios::sync......
  • Codeforces Round 886 (Div. 4) 全题题解
    我关注的人中正式参与比赛排名公示:#Who=Penalty*ABCDEFGH1(980)Chen_Jinhui7381\(\color{#00CC00}{\textbf{+}}\)00:05\(\color{#00CC00}{\textbf{+1}}\)00:17\(\color{#00CC00}{\textbf{+}}\)00:19\(\color{#00CC00}{\textbf{+}}\)01:08......
  • 题解 P9474 [yLOI2022] 长安幻世绘
    看到极差,不难想到双指针。显然,如果\([l,r]\)的位置都被覆盖,那么其中最多可以选\(\lceil\frac{r-l+1}{2}\rceil\)个数。我们先将所有数离散化,排序,双指针卡取值范围。set里面存pair类型变量,表示覆盖的区间。每次将值为\(r\)的数的位置加入,在set中二分到与它相邻的区......
  • 洛谷3294 背单词
    这题乍一看是排序贪心,然后使用领项交换来做题由于有了第一条规则的存在,因为\(n*n\)远大于另外两条规则所产生的代价,所以我们不会让后缀排在后面于是乎,我们倒序建立trie树并且重构树(具体可见洛谷题解),那么问题就转换为给这棵树标号,要求必须标了父亲才能标儿子,令每一条边的代价为......
  • 题解链接
    积跬步,至千里tag:二分洛谷P1314聪明的质检员洛谷P1024一元三次方程求解tag:分块CF785EAntonandPermutationtag:贪心UVA1335/洛谷P4409皇帝的烦恼题解tag:倍增+贪心P4155、P6902——一类区间覆盖问题tag:二进制洛谷P7617KOMPIĆI的一个小tricktag:排列组合+......