BZOJ 4238 电压 解题报告
BZOJ 4238 电压
考虑一条边成为答案以后,删去Ta后剩下的图是一个或很多个二分图,即没有奇环
则一条边可以成为答案,当且仅当自己在所有奇环的交上且不在偶环上。
考虑建出dfs树,那么返祖边一定在环上。
把边下放到点上,考虑处理出返祖边覆盖的两个端点直接的路径,这些点都在这个环上,按照这个环的奇偶打一个差分上去即可。
但是这样只考虑了只有一个返祖边在环上的情况,返祖边在两个环以上的环我们没有处理
考虑分类讨论
- 若两个有交返祖边奇偶不同,少处理的一个环是奇环,无论是大奇环还是小奇环都没有影响
- 若均为奇环,那么奇环的交不在大偶环上,也没有影响
- 若均为偶环,显然都不会成为答案
但是我们还需要考虑非树边
如果仅有一个奇环,那么奇环上的边都是答案
否则两个有交的非树边奇环一定构成了一个大偶环,使非树边不成为答案。
Code:
#include <cstdio>
#include <cctype>
#include <map>
#include <algorithm>
#define ll long long
using std::max;
using std::min;
const int SIZE=1<<21;
char ibuf[SIZE],*iS,*iT;
//#define gc() (iS==iT?(iT=(iS=ibuf)+fread(ibuf,1,SIZE,stdin),iS==iT?EOF:*iS++):*iS++)
#define gc() getchar()
template <class T>
void read(T &x)
{
x=0;char c=gc();
while(!isdigit(c)) c=gc();
while(isdigit(c)) x=x*10+c-'0',c=gc();
}
const int N=2e5+10;
int head[N],to[N<<2],Next[N<<2],cnt=1;
void add(int u,int v)
{
to[++cnt]=v,Next[cnt]=head[u],head[u]=cnt;
}
int n,m,dep[N],jh[N],oh[N],vis[N<<2],jhc,ohc,ans;
void dfs(int now)
{
for(int v,i=head[now];i;i=Next[i])
{
if(vis[i^1]) continue;
v=to[i];
vis[i]=1;
if(!dep[v])
{
dep[v]=dep[now]+1;
dfs(v);
jh[now]+=jh[v];
oh[now]+=oh[v];
}
else if((dep[now]-dep[v])&1)
++ohc,++oh[now],--oh[v];
else
++jhc,++jh[now],--jh[v];
}
}
int main()
{
read(n),read(m);
for(int u,v,i=1;i<=m;i++)
{
read(u),read(v);
add(u,v),add(v,u);
}
for(int i=1;i<=n;i++)
if(!dep[i])
dep[i]=1,dfs(i);
for(int i=1;i<=n;i++)
{
if(dep[i]==1) continue;
if(!jhc) ans+=oh[i]==0;
else if(jhc==1) ans+=jh[i]&&(oh[i]==0);
else ans+=(jh[i]==jhc)&&(oh[i]==0);
}
printf("%d\n",ans+(jhc==1));
return 0;
}
2019.6.26
BZOJ 4238 电压 解题报告的更多相关文章
- BZOJ 2959: 长跑 解题报告
2959: 长跑 Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能"为祖国健康工作五十年",同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑 ...
- BZOJ 3159: 决战 解题报告
BZOJ 3159: 决战 1 sec 512MB 题意: 给你一颗\(n\)个点,初始点权为\(0\)的有跟树,要求支持 Increase x y w 将路径\(x\)到\(y\)所有点点权加上\( ...
- BZOJ 3328: PYXFIB 解题报告
BZOJ 3328: PYXFIB 题意 给定\(n,p,k(1\le n\le 10^{18},1\le k\le 20000,1\le p\le 10^9,p \ is \ prime,k|(p- ...
- bzoj 4238 电压
LINK:电压 一张图 每个点可以为黑点或百点 每一条边的两端都必须为一黑一白.询问又多少条边满足除了这条边不满足条件其余所有边都满足条件. 分析一下这个所谓的条件 每一条边的两端必须为一黑一白 所以 ...
- BZOJ 4302 Buildings 解题报告
这个题好像很有趣的样子. 题目分析: 房间都是 $1\times k$ 的,也就是一条一条的.这个好像比较显然的样子. 一个房间如果要覆盖某个格子$u$,那么这个房间的面积至少为 $dis(u, Bo ...
- BZOJ 3160 万径人踪灭 解题报告
这个题感觉很神呀.将 FFT 和 Manacher 有机结合在了一起. 首先我们不管那个 “不能连续” 的条件,那么我们就可以求出有多少对字母关于某一条直线对称,然后记 $T_i$ 为关于直线 $i$ ...
- BZOJ 4127 Abs 解题报告
这个题感觉很厉害的样子.. 首先我们注意到一点:每次加的 $d$ 都是非负的. 那么就说明一个数只可能从负数变成非负数并且只会变一次. 所以我们就可以暴力地去改变一个数的正负情况. 然后我们就可以用树 ...
- BZOJ 3953 Self-Assembly 解题报告
首先,我们可以先考虑一个暴力一点的算法: 对于任意两个分子,如果它们能以至少一种进行匹配,那么我们就在这两个分子之间连一条边. 然后如果我们能找到一个环,就说明是 unbounded,否则就是 bou ...
- BZOJ 3956 Count 解题报告
好点对的个数是\(O(n)\)的,而且我们可以 \(O(n)\) 地求出所有好点对. 我们把这些点对以右端点为关键字从小到大排序,再弄个扫描线,每次把右端点在扫描线上的点对的左端点加入线段树,于是我们 ...
随机推荐
- java后端发送请求并获取响应
URL wsUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection(); conn. ...
- 编程语言 - PHP
环境搭建 Window7+Apache24+PHP7. Apache24配置 LoadModule php7_module "D:/SoftWare/php-7.2.21-Win32-VC1 ...
- 基于Apache搭建HTTP HTTPS
参考资料 <openssl攻略>--第一章 <Apache服务器配置与使用工作笔记>-- 第六章 第十四章 https://juejin.im/post/5a31faf2518 ...
- MyBatis-Spring的sqlSessionTemplate
转自:http://www.cnblogs.com/yhtboke/p/5611375.html SqlSessionTemplate SqlSessionTemplate是MyBatis-Sprin ...
- spring-第十七篇之spring AOP基于注解的零配置方式
1.基于注解的零配置方式 Aspect允许使用注解定义切面.切入点和增强处理,spring框架可以识别并根据这些注解来生成AOP代理.spring只是用了和AspectJ 5一样的注解,但并没有使用A ...
- 组件化框架设计之AOP&IOC(四)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将从以下两个方面来介绍组件化框架设计: [AOP(面向切 ...
- 使用form提交到搜狗浏览器示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Task总结
1.Task的优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便.比如: ◆ ThreadPool不支持线程的取消.完成.失败通知等交互性 ...
- JS-04 JS中的函数都是按值传递的
JS中的函数都是按值传递的 1.传递参数是基本类型 如例子:基本类型传入函数后,函数内部参数生成一个参数副本,把num变量的值赋给num参数,num参数再去参与函数中的运算,但不会影响外面num变量的 ...
- go语言学习之从例子开始
[目录] go语言从例子开始之Example1.helloworld go语言从例子开始之Example2.类型 go语言从例子开始之Example3.变量 go语言从例子开始之Example4.常量 ...