CF1070L Odd Federalization 高斯消元
传送门
\(r = 1\)直接判断所有点度数是否为偶数
考虑\(r = 2\)的情况。设\(x_i=0/1\)表示\(i\)点所在的集合,那么若\(2 \mid du_u\),则\(\bigoplus\limits_{(u,v) \in e} x_v = 0\),否则\(\bigoplus\limits_{(u,v) \in e} x_v = x_u \bigoplus 1\),即\(x_u\ \ xor\ \ \bigoplus\limits_{(u,v) \in e} x_v = 1\)。
可以发现上面是一个异或方程组,高斯消元解出来即可。
但是\(r\)有可能\(> 2\)吗?事实上\(r\)只会等于\(1\)或者\(2\)。
可以发现如果\(r>2\),意味着上面的异或方程组无解。无解则存在某些异或方程能够异或得到\(0=1\)。右式为\(1\)意味着有奇数个入度为奇数的点,而左式为\(0\)意味着所有点在这些异或方程中都出现了偶数次,而度数为奇数的点会在自己的方程中出现一次,所以在这个导出子图中,度数为奇数的点连接了奇数个点,度数为偶数的点连接了偶数个点,这意味着这个导出子图的度数和为奇数。但对于一个无向图度数无论如何都是偶数,所以不存在无解情况,所以\(r \leq 2\)。
#include<bits/stdc++.h>
using namespace std;inline int read(){int a = 0;char c = getchar();bool f = 0;while(!isdigit(c)){if(c == '-')f = 1;c = getchar();}while(isdigit(c)){a = (a << 3) + (a << 1) + (c ^ '0');c = getchar();}return f ? -a : a;
}const int MAXN = 2010;
bitset < MAXN > gauss[MAXN];
int N , M , ans[MAXN];int main(){for(int T = read() ; T ; --T){N = read();M = read();for(int i = 1 ; i <= N ; ++i){gauss[i].reset();gauss[i].set(i);}for(int i = 1 ; i <= M ; ++i){int a = read() , b = read();gauss[a][N + 1] = ~gauss[a][N + 1];gauss[b][N + 1] = ~gauss[b][N + 1];gauss[a][b] = gauss[b][a] = 1;}bool f = 1;for(int i = 1 ; f && i <= N ; ++i)f = !gauss[i][N + 1];if(f){puts("1");for(int i = 1 ; i <= N ; ++i)printf("1 ");}else{for(int i = 1 ; i <= N ; ++i)if(!gauss[i][N + 1])gauss[i][i] = 0;int now = 1;for(int i = 1 ; i <= N ; ++i){int j = now;while(j <= N && !gauss[j][i])++j;if(j > N){ans[i] = 0;for(int k = 1 ; k < now ; ++k)gauss[k][i] = 0;continue;}if(j != now)swap(gauss[j] , gauss[now]);while(++j <= N)if(gauss[j][i])gauss[j] ^= gauss[now];++now;}for(int j = now - 1 ; j ; --j){int p = 0;for(int k = 1 ; !p && k <= N ; ++k)if(gauss[j][k])p = k;ans[p] = gauss[j][N + 1];for(int k = j - 1 ; k ; --k)if(gauss[k][p])gauss[k] ^= gauss[j];}puts("2");for(int i = 1 ; i <= N ; ++i)printf("%d " , ans[i] + 1);}putchar('\n');}return 0;
}
转载于:https://www.cnblogs.com/Itst/p/10423837.html
CF1070L Odd Federalization 高斯消元相关推荐
- Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter
文章目录 前言 XOR-filter 实现原理 xor filter 的构造原理 xor filter 构造总结 XOR-filter 和 ADD-filter对比 XOR-filter 在计算上的优 ...
- poj 1681 Painter#39;s Problem(高斯消元)
http://poj.org/problem? id=1681 求最少经过的步数使得输入的矩阵全变为y. 思路:高斯消元求出自由变元.然后枚举自由变元,求出最优值. 注意依据自由变元求其它解及求最优值 ...
- AC自动机 + 概率dp + 高斯消元 --- HDU 5955 or 2016年沈阳icpc H [AC自动机 + 概率dp + 高斯消元]详解
题目链接 题目大意: 就是有NNN个人,每个人都会猜一个长度为LLL的只包含{1,2,3,4,5,6}\{1,2,3,4,5,6\}{1,2,3,4,5,6}的序列,现在裁判开始投掷骰子,并且把每次的 ...
- ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Generator Weblink https://www.luogu.com.cn/problem/ ...
- 2020 ACM / ICPC 济南 A Matrix Equation (高斯消元、乘法原理)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 给你定义两种 010101 矩阵上的运算: Xi,j×Yi,j=(∑k=1NXi,kYk,j ...
- luogu P4035 [JSOI2008]球形空间产生器(高斯消元 / 模拟退火)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 数据范围只开到了10,而且是经典的力学结构,所以我们可以用模拟退火,可以做一下 nnn 维的正交分解h ...
- BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]
2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清 ...
- [BZOJ 3143][Hnoi2013]游走(高斯消元+期望)
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- [Sdoi2017]硬币游戏 [高斯消元 KMP]
[Sdoi2017]硬币游戏 题意:硬币序列,H T等概率出现,\(n \le 300\)个人猜了一个长为$ m \le 300$的字符串,出现即获胜游戏结束.求每个人获胜概率 考场用了[1444: ...
最新文章
- 皮一皮:人生就像编程,总有防不胜防的bug会被人发现...
- CentOS进不了系统
- 即时通讯源码对企业到底有多重要呢?
- java 中文文件路径乱码 解决方法
- Oracle JRE 7 Update 51 (64 bit) or higher is required forPolybase failed解决办法
- html图表插入ppt
- 稳压二极管工作原理及参数详解
- java工厂模式:简单工厂、工厂方法、抽象工厂(通俗易懂)
- python之父考虑重构python解释器_Python之父考虑重构Python解释器
- 准相位匹配二阶频率转换
- This Python interpreter is in a conda environment问题解决
- 英特尔RealSense激光雷达摄像头L515拆解分析
- IPD+CMMI+Scrum一体化研发管理解决方案之CMMI
- static应用知识:代码块
- 聊聊我是如何拿到这么多大厂offer的
- 测试开发实习日记(DAY1)
- css设置背景透明度 不影响其他文字图片
- 统计学的Python实现-010:四分位距
- STM32通过SPI采集DT50 ADS8320数据
- 小程序下滑分页加载数据
热门文章
- ADO.NET的数据库查询2009-12-07 02:20 P.M.ADO.NET的数据库查询
- FFmpeg中实现对多媒体信息的获取与打印av_dump_format
- SpringMVC和SpringBoot的拦截器 HandlerInterceptor 入门
- 查找最晚入职员工的所有信息---牛客网SQL实战篇
- 「 每日一练,快乐水题 」540. 有序数组中的单一元素
- FFmpeg再学习 -- Windows下安装说明
- C语言再学习 -- NUL和NULL的区别
- Java访问修饰符(访问控制符)
- Linux 内核的文件 Cache 管理机制介绍
- php accesscontrolalloworigin,php – Access-Control-Allow-Origin没有显示在codeigniter的响应头中...