这个刚开始困扰了我好久。首先我们要知道在求BCC时我们建的时是无向图,就是说两个点之间有两条边,方向相反,而我们在存边的时候一般都是add(u,v)后立即add(v,u),也就是说我们存的边是相邻的,互为反边。而取反就是一个很神奇的东西,先看图。
如图下面的数据我们就可以看出一些有趣的地方了。
0与1取反是1,1与1取反是0,而偶数二进制最后一位是零,取反后变成1相当于加了1,而奇数二进制最后以为是1,取反后变成0,相当于减去1,这样就可以实现相邻的边相互转换了。
wx63e3681ff1000 博主文章分类:XCPC&CF&蓝桥杯_题解 ©著作权
这个刚开始困扰了我好久。首先我们要知道在求BCC时我们建的时是无向图,就是说两个点之间有两条边,方向相反,而我们在存边的时候一般都是add(u,v)后立即add(v,u),也就是说我们存的边是相邻的,互为反边。而取反就是一个很神奇的东西,先看图。
如图下面的数据我们就可以看出一些有趣的地方了。
0与1取反是1,1与1取反是0,而偶数二进制最后一位是零,取反后变成1相当于加了1,而奇数二进制最后以为是1,取反后变成0,相当于减去1,这样就可以实现相邻的边相互转换了。
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M