首页 > 其他分享 >CF 547D. Mike and Fish 题解

CF 547D. Mike and Fish 题解

时间:2022-10-05 12:00:07浏览次数:92  
标签:547D int 题解 Fish Mike MAXN col

Solution 1 二分图染色

显然这题是构造染色方案,于是我们考虑将矩阵转化成图进行染色。

结论:将同一行的点两两配对,将同一列的点两两配对,形成的一定是二分图

证明:由于每个点最多连出一条横边和一条竖边,那么这张图上的环一定是横竖边交替排列的,即所有的环都为偶环。

所以我们对这张二分图进行黑白染色,每一行和每一列最多有一个点为孤立的点,符合题目要求。

想明白这题难度就远远不到 2600 了。

代码

//547D. Mike and Fish
#include <bits/stdc++.h>
using namespace std;
const int MAXN=2e5+5;
int n,x[MAXN],y[MAXN],col[MAXN];
vector<int> g[MAXN];
void DFS(int u,int c)
{
    col[u]=c;
    for(int v:g[u])
    {
        if(!~col[v])
        {
            DFS(v,c^1);
        }
    }
    return;
}
int main()
{
    int tx,ty;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&tx,&ty);
        if(x[tx])
        {
            g[i].push_back(x[tx]);
            g[x[tx]].push_back(i);
            x[tx]=0;
        }
        else 
        {
            x[tx]=i;
        }
        if(y[ty])
        {
            g[i].push_back(y[ty]);
            g[y[ty]].push_back(i);
            y[ty]=0;
        }
        else 
        {
            y[ty]=i;
        }
    }
    memset(col,-1,sizeof(col));
    for(int i=1;i<=n;i++)
    {
        if(!~col[i])
        {
            DFS(i,0);
        }
    }
    for(int i=1;i<=n;i++)
    {
        printf("%c",col[i]?'r':'b');
    }
    printf("\n");
    return 0;
}
/*
 * CF
 * https://codeforces.com/contest/547/problem/D
 * C++20 -O0
 * 2022.10.5
 */

其他做法

详见 这篇博客,介绍了本题的网络流和欧拉回路做法。

标签:547D,int,题解,Fish,Mike,MAXN,col
From: https://www.cnblogs.com/2020gyk080/p/16755298.html

相关文章

  • P4572 题解
    前言题目传送门!更好的阅读体验?双倍经验:P3554(数据坑一点)。简要题意可以看P3554。思路:二分答案+树形DP。思路答案显然具有单调性,所以考虑二分答案。\(\operatorna......
  • P3226 [HNOI2012]集合选数 题解
    纪念一下30紫and500AC首先先膜拜一下神仙出题人,这题太神仙了。题意:要构造一个集合,使得$x\inA$,满足$2x\notinA$且$3x\notinA$,求\(\{1,2,\ldots,n\}\)......
  • 【Ynoi2009】 rla1rmdq 题解 (离线分块 + 线性空复处理)
    洛谷传送门分块。Solution看到是区修区查,还有时限,不难想到是分块,根号复杂度。然后看到空间复杂度,需要离线下来转为线性复杂度。考虑如何分块。观察操作性质,发现节点......
  • 「CF1455G」Forbidden Value 题解 (DP,线段树合并)
    题目简介已知初始值\(x=0\),给定下面\(2\)种命令:set\(y\)\(v\),令\(x=y\),或花费\(v\)元钱删除该命令;if\(y\)...end,如果\(x==y\),执行if...end中的命令,否则跳......
  • [题解]洛谷 P4930、BZOJ 4221
    洛谷P4930考虑\(\varphi\)有什么性质,设\(x\)的质因数分解为\(\prod_{i=1}^mp_i^{a_i}\),那么\(n=\varphi(x)=\prod_{i=1}^m(p_i-1)\times\prod_{i=1}^mp_i^{a_i-1......
  • 「ROIR 2021 Day 1」题解
    loj有原题。别问为什么没T4,问就是不会,等以后来补。T1-两台机器设两台机子分别为\(a,b\),分\(4\)种情况:只用\(a\),只用\(b\),先\(a\)后\(b\),先\(b\)后\(a\),判断......
  • Windows下CLion中文乱码问题解决
    (目录)原因分析Windows内部采用UTF-16编码,对于中文操作系统使用GBK编码,但是CLion默认文本编码为UTF-8,当编码不一致时,就会造成输出乱码,甚至编译不通过。解决方案当然,对于......
  • 类与对象课件问题解答
    结果:true 结果:false原因:当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等。     当“==”施加于引用类型变量时,是比较这两个变量是否引用......
  • Luogu P5089 [eJOI2018] 元素周期表 题解
    (从洛谷博客搬过来的)这道题嘛..主要还是找性质推规律。拿到题,第一眼:噢噢爆搜啊。第二眼:噢噢贪心啊。第三眼:很好贪心假了。然后苦思冥想半个小时去看题解。看到兔队的......
  • CF1427E Xum 题解
    (从洛谷博客搬过来的)学校比赛的时候考了这道题,我当然是一分没得。这是一道好构造题。先不说正解,我看别的题解都没有说怎么拿部分分,但是如果赛时不会正解,那么拿部分分就......