首页 > 其他分享 >CF547D Mike and Fish(图论建模)

CF547D Mike and Fish(图论建模)

时间:2024-10-07 21:22:31浏览次数:9  
标签:连边 Mike int Fish CF547D 建模 lsty lstx col

题意

二维平面上有 \(n\) 个点 \((x_i,y_i)\),你需要给每个点染色红色或蓝色使得每一行、每一列上红蓝点数差小于等于 1。

\(n,x_i,y_i\le 2\times10^5\)。

分析

方法一:上下界网络流

对所有行和列建点,\(x_i\rightarrow y_i\) 连边,流量 \([0,1]\),有流量表示染红。源点向行点连边,流量 \([\lfloor\frac{p_i}{2}\rfloor,\lceil\frac{p_i}{2}\rceil]\),\(p_i\) 是 \(i\) 行点数,表示染的红点数量必须要在这段区间内与蓝点数量的差才合法。列点向汇点连边,流量同理。

方法二:欧拉回路

可能是一个经典套路。套路性的建行点列点,\(x_i,y_i\) 间连一条无向边。但是这个建模不是很能契合欧拉回路的特征(可能会有奇度点)。不难发现若一行有奇数个点那么两两配对后剩下的点可以随便选,新建一个虚点将所有奇点连向它即可。现在所有点度数为偶,任选起点跑欧拉回路即可,颜色根据边的经过方向定。

方法三:二分图染色

我认为非常优美的思路,我想不到

将一行内的点两两配对,剩下一个点不管。列同理。

可以证明该图为二分图。

感性证明:根据建模,一个点只会跟至多一个与它同横坐标的点和至多一个与它同纵坐标的点连边。假设有点 \((x,y)-(x,z),y\neq z\),由于 \((x,z)\) 已经跟一个横坐标与其相同的点连过边了,那么另一条出边必然和其纵坐标相同,以此类推,当走到与 \((x,y)\) 同侧的点时,其与其入点的纵坐标相同,故若形成奇环,那么这个点一定要和 \((x,y)\) 连边。而 \((x,y)\) 的横坐标边已经跟 \((x,z)\) 相连了,这与一行内点两两匹配的建模方式相悖,因此得证。

给出方法三代码,非常好写:

int n;
vector<int>G[maxn];
int lstx[maxn],lsty[maxn];
int col[maxn];
void dfs(int x,int c){
	col[x]=c;
	for(int u:G[x])if(!col[u])dfs(u,-c);
}
inline void solve_the_problem(){
	n=rd();
	rep(i,1,n){
		int x=rd(),y=rd();
		if(!lstx[x])lstx[x]=i;
		else G[lstx[x]].emplace_back(i),G[i].emplace_back(lstx[x]),lstx[x]=0;
		if(!lsty[y])lsty[y]=i;
		else G[lsty[y]].emplace_back(i),G[i].emplace_back(lsty[y]),lsty[y]=0;
	}
	rep(i,1,n)if(!col[i])dfs(i,1);
	rep(i,1,n)pc(col[i]==1?'r':'b');
}

标签:连边,Mike,int,Fish,CF547D,建模,lsty,lstx,col
From: https://www.cnblogs.com/dcytrl/p/18450669

相关文章

  • Fish
    题目链接Fish算法状压dp维护余下鱼的存在集合代码#include<bits/stdc++.h>constintMAXN=20;constintMAXSize=(1<<18);intn;doubleP_eat[MAXN][MAXN];//第i条鱼吃第j条鱼的概率doubleSum_eat[MAXN];//第i条鱼被吃的概率总和/*一个二进制的......
  • 题解:Luogu CF548A Mike and Fax
    CF548AMikeandFax题解题面翻译给定一个字符串和一个整数\(k\),问是不是恰好存在\(k\)个子字符串是回文串,并且所有子字符串的长度一样长。题目上说有\(k\)个子字符串,我们就可以把字符串分成\(k\)份,如果分不成\(k\)份(也就是说长度不是\(k\)的倍数)的话,直接输出NO。......
  • CF1874F Jellyfish and OEIS
    CF1874FJellyfishandOEIS第一次独立切*3500,写篇题解记录一下我们称\([l,r]\)为一个排列,当且仅当\([p_l,p_{l+1},\dots,p_r]\)为\([l,l+1,\dots,r]\)的一个排列。不妨固定\(l\),我们只需要考虑最小的\(r\)满足\([l,r]\)为一个排列。考虑每个\([l,r]\)所构成的区......
  • 一款安全、简单、有效的蜜罐平台Hfish,windows 搭建教程!
    一款安全、简单、有效的蜜罐平台Hfish,windows搭建教程!蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方......
  • SCIE1104 Fisheries health
    AssignmentTWOQuestionsandAssessmentGuideDatasetsTherelevantdatasetscanbefoundontheLMS.SubmittingAssignmentTWOTheassignmentmustbesubmittedviatheLMS.Pleasecompilethefinalassignmentdocumentintoapdfdocumentbeforesubmis......
  • 探索最佳 Shell 工具:全面测评 Bash、Zsh、Fish、Tcsh 和 Ksh
    感谢浪浪云支持发布浪浪云活动链接:https://langlangy.cn/?i8afa52文章目录1.简介2.测评工具3.测评标准4.Bash测评4.1易用性4.2功能特性4.3性能4.4可定制性4.5社区和支持5.Zsh测评5.1易用性5.2功能特性5.3性能5.4可定制性5.5社区和支持6.Fish测......
  • Billfish智能分类,让素材库井井有条,提升设计效率!
    前言面对电脑,曾几何时,为寻找合适的图片、设计稿或是文案而翻箱倒柜,焦头烂额?是否加班到深夜,仅仅为了整理堆积如山的素材文件?别慌,让我来告诉你一个秘密武器——Billfish!想象一下,当你手头的项目急如星火,需要迅速调用海量素材时,而它就像一位贴心助手,把你的创意素材整理得井井有......
  • [Paper Reading] Egocentric Whole-Body Motion Capture with FisheyeViT and Diffusi
    EgocentricWhole-BodyMotionCapturewithFisheyeViTandDiffusion-BasedMotionRefinementlink时间:CVPR2024机构:马普所&SaarlandInformaticsCampus&Google&UniversityofPennsylvaniaTL;DR使用第一人称RGB单目鱼眼相机进行全身动捕的算法,融合了FisheyeVit&3......
  • 宣传脚本 NoFishing
    这个脚本费事作者一周,作者不断思考\(\texttt{UI}\)设计和用户体验,最后写成这样。如果有想做贡献的小朋友也可以在link中提建议、改代码,谢谢。//==UserScript==//@nameNoFishing//@namespacehttp://tampermonkey.net///@version2.5//@description......
  • 巧用guestfish工具修改kvm镜像
    场景1:KVM虚拟机启动后,如果想ssh这个虚拟机,但是却不知道不知道默认的用户名和密码,这时可以利用guestfish工具把自己的publicsshkey注入到目标虚拟机,从而实现通过sshkey登录的目的。1得到虚拟机启动盘的qcow2镜像的位置virshdumpxml<VMName><devices>   <emulator>/usr/b......