【题解】等你哈苏德 首先把染色变成差分,然后抽象成两个点l,r+1,连一条有向边,染色就是方向,要求每个点的前缀和S∈[−1,1]。 把差为1的变成0,就把差为1的部分覆盖一个区间(连一条无向边),这样就可以全部转化为差为0的情况。 发现这是一个欧拉回路(图不保证连通可能有多条):从S开始,每走一条正向边相当于给这段区间+1,反向边相当于−1,因为欧拉...
跑出最大流,如果某条原图上的边流量为0,那么就是被重定向了的。判断是否有欧拉回路的方式就是看这个图是否为满流,如此即可。 code #include<bits/stdc++.h>usingnamespacestd;#defineint long longinlinevoidread(int&x) { x=0;intp=1;charch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')p=...
这实际上就是混合图的欧拉回路问题,我们将未定向的边随机定向,新建源点汇点,源点向出度大于入度的点连容量为(出度-入度)/2,反之连向汇点,原图的边容量全为1,跑一遍最大流,一条增广路就意味着将路径上所有边反向,两个出入度不等的点调整了一下,且中间的所有点不改变,合法的条件就是新边全部满流。 如果我...
【JZOJ6231】【20190625】等你哈苏德题目 有(m)条线段,每条线段为([l_i,r_i]),每条线段可以是黑/白色 有些线段已经被染色,有些需要被确定颜色 询问是否存在一种染色方案,使得对于每一个位置(i),覆盖它的线段黑白个数差的绝对值不超过1 (1 le m le 10^5 , n le 10^9) 题解 将每条线段变成([l_...
[20220315联考] 等你哈苏德 前言 这场考试第一感觉都挺准的,但是就是不会做。 题目 没有链接 给整数n,mn,m,mm条线段,一些线段已经被黑白染色,一些待定,你需要给线段染色以保证每个点被黑线段和白线段覆盖条数的差值的绝对值小于等于 1,无解输出 -1。
题目 有$m$条线段,每条线段为$[l_i,r_i]$,每条线段可以是黑/白色 有些线段已经被染色,有些需要被确定颜色 询问是否存在一种染色方案,使得对于每一个位置$i$,覆盖它的线段黑白个数差的绝对值不超过1 $1 \le m \le 10^5 , n \le 10^9$ 题解 将每条线段变成$[