【题解】CF742E (二分图+构造)

自闭了CodeForces - 742E

给定的条件就是一个二分图的模型,但是有一些不同。不同就不同在可以出现相邻两个点颜色相同的情况。

构造常用方法之一是按奇偶分类,就是尽管不同奇偶性的块之间会产生影响,但是我们先不管这些限制。

这道题里,假若奇偶块之内都能满足题目的限制,那么奇偶块之间也满足限制了。因为限制是不能存在三个联系相等,然而我们已经保证块内每两个不相等。

  • 男女朋友连边。
  • \(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 (二分图+构造)的更多相关文章

  1. CF1012B Chemical table 题解【二分图】【构造】

    有意思的网格图转化.CF Div.1 还是挺有难度的. 注:由于本题有较完美的中文题面,所以不贴英文题面. 英文题面 题目描述 Innopolis 大学的教授正努力研究元素周期表.他们知道,有 \(n ...

  2. CF1139E Maximize Mex 题解【二分图】

    我发现我有道叫[SCOI2010]连续攻击游戏的题白写了.. Description There are \(n\) students and \(m\) clubs in a college. Th ...

  3. P2764 最小路径覆盖问题 题解(二分图)

    建图思路很明确,拆点跑最大匹配,但这明显是个二分图的题题解居然只有一篇匈牙利算法. 发一种和之前那篇匈牙利思路略有不同的题解. 本题的难点就是如何输出,那么我们不妨在建图的时候加入一个原则,即:连边时 ...

  4. cf623A. Graph and String(二分图 构造)

    题意 题目链接 Sol 可以这样考虑,在原图中没有边相连的点的值肯定是a / c 那么直接二分图染色即可 #include<bits/stdc++.h> #define LL long l ...

  5. bzoj1854 游戏题解(二分图/并查集)

    1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 5547  Solved: 2229[Submit][Status] ...

  6. P1640 [SCOI2010]连续攻击游戏 二分图构造

    https://www.luogu.org/problemnew/show/P1640 题意 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10 ...

  7. Codeforces Round #670 (Div. 2) D. Three Sequences 题解(差分+思维+构造)

    题目链接 题目大意 给你一个长为n的数组a,要你构造一个非严格单调上升的数组b和一个非严格单调下降的数组c,使得\(b_i+c_i=a_i\) 要你使这两个数组b,c中最大的元素最小,还有q次修改(q ...

  8. P2055 [ZJOI2009]假期的宿舍 题解(二分图)

    题目链接 P2055 [ZJOI2009]假期的宿舍 解题思路 因为懒,提供一种不连边,直接根据题目给出的邻接矩阵进行匈牙利算法的思路. \(a[i][j]\)表示\(i\)能不能睡\(j\)的床,需 ...

  9. [题解] [NOIP2008] 双栈排序——关系的冲突至图论解法

    Problem 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操 ...

随机推荐

  1. Header和Cookie相关内容

    相信很多同学都对HTTP的header和cookie,和session都有疑问,因为我们开发的时候一般都需要请求网络获取数据,有时候还需要带cookie或者带特殊的字段发起请求. 现在我们就来简单的了 ...

  2. 在springmvc中 @RequestMapping(value={"", "/"})是什么意思

    这个意思是说请求路径 可以为空或者/ 我给你举个例子:比如百度知道的个人中心 访问路径是 http://zhidao.baidu.com/ihome,当然你也可以通过 http://zhidao.ba ...

  3. 红帽Linux6虚拟机克隆后操作

    1.首先需要修改root密码 开机后按2次e进入以下界面 按e编辑 在quiet后输入single 1 输入好了之后,“回车”,返回到了刚刚的界面,再输入“b”,让boot引导进入系统. 进入单用户模 ...

  4. GitHub 上 10 款免费开源 Windows 工具

    GitHub 上 10 款免费开源 Windows 工具 GitHub 是如今所有开源事物的中央仓库, 这个网站最近发布了一个叫做<2016 Octoverse  状态报告>,详细列出了从 ...

  5. oracle CBO下使用更具选择性的索引

    基于成本的优化器(CBO, Cost-Based Optimizer)对索引的选择性进行判断来决定索引的使用是否能提高效率. 如果索引有很高的选择性, 那就是说对于每个不重复的索引键值,只对应数量很少 ...

  6. 给tomcat容器配置SSL的记录,包含项目完整部署过程

    给tomcat容器配置SSL(https) 昨天公司有一个旧的项目要部署, 服务器(OS是windows 10) 数据库都是新买的, 写个博客记录一下 1, 下载证书(以阿里云为例子) 参考链接: h ...

  7. Android Button点击效果(按钮背景变色、文字变色)

    一. 说明 Android Button的使用过程中,我们会需要为Button添加点击效果,不仅仅按钮的背景色需要变化,而且有时,我们连文字的颜色都希望变化,我们可以使用StateListDrawab ...

  8. CSS中常用的简写模式

    一.font属性简写 font-style:字体样式 normal 默认值.浏览器显示一个标准的字体样式. italic 浏览器会显示一个斜体的字体样式. oblique 浏览器会显示一个倾斜的字体样 ...

  9. java List接口中常用类

    Vector:线程安全,但速度慢,已被ArrayList替代. ArrayList:线程不安全,查询速度快. LinkedList:链表结构,增删速度快.取出List集合中元素的方式: get(int ...

  10. LA 3942 ——Trie (前缀树)、DP

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...