【题解】CF742E (二分图+构造)
【题解】CF742E (二分图+构造)
给定的条件就是一个二分图的模型,但是有一些不同。不同就不同在可以出现相邻两个点颜色相同的情况。
构造常用方法之一是按奇偶分类,就是尽管不同奇偶性的块之间会产生影响,但是我们先不管这些限制。
这道题里,假若奇偶块之内都能满足题目的限制,那么奇偶块之间也满足限制了。因为限制是不能存在三个联系相等,然而我们已经保证块内每两个不相等。
- 男女朋友连边。
- \(2i\)和\(2i-1\)连边。
然后跑二分图染色,考虑是否存在无解,这个图显然有染色方案,因为所有联通块个数为偶数
//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define ERR(s) cerr<<(#s)<<"="<<(s)<<endl;
#define getchar() (__c==__ed?(__ed=__buf+fread(__c=__buf,1,19260817,stdin),*__c++):*__c++)
using namespace std; typedef long long ll; char __buf[19260817],*__c=__buf,*__ed=__buf;
inline int qr(){
register int ret=0,f=0;
register char c=getchar();
while(!isdigit(c))f|=c==45,c=getchar();
while(isdigit(c)) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxn=2e5+5;
vector<int> e[maxn];
inline void add(const int&fr,const int&to){e[fr].push_back(to); e[to].push_back(fr);}
pair<int,int> P[maxn>>1];
int n,w[maxn];
queue<int> q;
inline void bfs(const int&s){
q.push(s);
if(w[s-1]) w[s]=w[s-1]^1;
else w[s]=2;
while(q.size()){
int now=q.front();
q.pop();
for(auto t:e[now])
if(!w[t]) w[t]=w[now]^1,q.push(t);
}
}
int main(){
n=qr();
for(int t=1;t<=n;++t) P[t].first=qr(),P[t].second=qr(),add(P[t].first,P[t].second);
for(int t=1;t<=n+n;t+=2) add(t,t+1);
for(int t=1;t<=n+n;++t) if(!w[t]) bfs(t);
for(int t=1;t<=n;++t)
printf("%d %d\n",w[P[t].first]-1,w[P[t].second]-1);
return 0;
}
后话:博主最开始看错题了(英语太菜),把题干里的some solution scheme
看作some solution schemes
,加上没看样例和输出格式。以为要计数,想了很久不会做。有没有人会做这题的计数版本?就是问有多少种合法方案。
【题解】CF742E (二分图+构造)的更多相关文章
- CF1012B Chemical table 题解【二分图】【构造】
有意思的网格图转化.CF Div.1 还是挺有难度的. 注:由于本题有较完美的中文题面,所以不贴英文题面. 英文题面 题目描述 Innopolis 大学的教授正努力研究元素周期表.他们知道,有 \(n ...
- CF1139E Maximize Mex 题解【二分图】
我发现我有道叫[SCOI2010]连续攻击游戏的题白写了.. Description There are \(n\) students and \(m\) clubs in a college. Th ...
- P2764 最小路径覆盖问题 题解(二分图)
建图思路很明确,拆点跑最大匹配,但这明显是个二分图的题题解居然只有一篇匈牙利算法. 发一种和之前那篇匈牙利思路略有不同的题解. 本题的难点就是如何输出,那么我们不妨在建图的时候加入一个原则,即:连边时 ...
- cf623A. Graph and String(二分图 构造)
题意 题目链接 Sol 可以这样考虑,在原图中没有边相连的点的值肯定是a / c 那么直接二分图染色即可 #include<bits/stdc++.h> #define LL long l ...
- bzoj1854 游戏题解(二分图/并查集)
1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 5547 Solved: 2229[Submit][Status] ...
- P1640 [SCOI2010]连续攻击游戏 二分图构造
https://www.luogu.org/problemnew/show/P1640 题意 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10 ...
- Codeforces Round #670 (Div. 2) D. Three Sequences 题解(差分+思维+构造)
题目链接 题目大意 给你一个长为n的数组a,要你构造一个非严格单调上升的数组b和一个非严格单调下降的数组c,使得\(b_i+c_i=a_i\) 要你使这两个数组b,c中最大的元素最小,还有q次修改(q ...
- P2055 [ZJOI2009]假期的宿舍 题解(二分图)
题目链接 P2055 [ZJOI2009]假期的宿舍 解题思路 因为懒,提供一种不连边,直接根据题目给出的邻接矩阵进行匈牙利算法的思路. \(a[i][j]\)表示\(i\)能不能睡\(j\)的床,需 ...
- [题解] [NOIP2008] 双栈排序——关系的冲突至图论解法
Problem 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操 ...
随机推荐
- @loj - 2434@ 「ZJOI2018」历史
目录 @description@ @solution@ @accepted code@ @details@ @description@ 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的 ...
- python-----堡垒机前戏paramiko模块及进阶
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: i ...
- Docker 领衔 OpenSource.com 2014十佳开源软件排行榜
Docker 领衔 OpenSource.com 2014十佳开源软件排行榜 每年 Opensource.com 都会收集最佳的十个开源软件,今年也不例外,废话不多说,直接进入主题. Docker 应 ...
- Oracle使用——varchar2() 和 char()关联查询 存在空格
背景 表dbcontinfo 字段loanid,类型为varchar2(60) 表dbloanbal 字段loanid,类型为char(60) loanid字段实际长度为24位 问题 两张表dbloa ...
- H3C 使用命令视图
- laravel 实现微博第三方登陆
https://blog.csdn.net/a12541254/article/details/79415550 1.安装 composer require socialiteproviders/we ...
- Android教程-02 在程序中输出Log
视频教程,建议采用超清模式观看 在Android中一般都用Log输出日志,常见的有5个不同的级别 Log.v() Log.d() Log.i() Log.w() Log.e() 当然很多程序员还比较习 ...
- PHP中 spl_autoload_register() 函数用法
这篇文章主要介绍了PHP中spl_autoload_register()函数用法,结合实例形式分析了__autoload函数及spl_autoload_register函数的相关使用技巧,需要的朋友可 ...
- uva 100 The 3n + 1 problem (RMQ)
uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...
- H3C 公有地址和私有地址