【每日一题】4月23日题目精讲 dfs+思维

题号 NC17067
名称 边的染色
来源 美团2018年CodeM大赛-复赛
戳我进入往期每日一题汇总贴~
往期每日一题题单

图片说明

如果你在题库做题时遇到了喜欢的题目,欢迎推荐给邓老师~ 点击查看详情

题解

本题设计得比较巧,但是乍一看有可能毫无思路……

我们首先来考虑一些简单的问题:

给你一张连通图,让你给边标上0或者1,使得任意一个环,里面所有边的边权的异或值为0,求任意方案。

我们考虑不给边直接标记01而是去给点赋值,因为在一个环里,每个点都会贡献两条边,于是如果我们把每条边的值记为他的两个顶点的异或值,那么在每个环里,顶点的异或值都算了两遍,就异或没啦,于是不管我们的顶点值怎么标环的异或值都一定是0!(这个是可以扩展到任意赋值的,不需要值一定是0/1)

那么把求任意方案变成求方案数呢?

我们考虑一下如果每个点任意标0/1会不会把情况算重复?

在一个连通块里,如果原来的点权1变成0,原来0变成1,求出来的边权就会一模一样,其他时候都是不一样的。也就是说,n个点每个点都有两种方案的2^n算出来的是给点赋予权值的方案,对应给边赋权值的方案是两倍关系,所以,n个点的连通图有种方案。

那么图如果不连通呢?

显然对每个连通块都求一下方案数然后乘起来就行。

现在回到题目:有的边权值已经标好了怎么办?

一条边有权值了,会使得它连着的两个点里面的一个是“不自由”的了(值由另外一个点的值和边权决定),注意如果这条边连的两个点都已经是“不自由“的,则需要判断矛盾,如果不矛盾,它也并没有增加”不自由“的点。事实上,我们应该找一下由提前标好权值的边连出来的连通块,在这个连通块中,只有一个点是”自由”的,即只要确定一个点的权值,其他的就全部确定。如果把这个连通块大小记作k_{i},那么这个连通块的存在就会使得方案数需要在原来的基础上(不考虑之前有标记)除以

注意:有可能最开始数据给出的边本身就是矛盾的(环的异或和已经不为1了),需要判定之后直接输出0。

代码可戳我查看

看完邓老师的题解,记得去做题提高呀~
欢迎各位大佬来做题写题解,也欢迎大家踊跃在当日讨论贴中提问!

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目4月30日中午12:00之前写的题解有获得牛币资格~

.牛币兑换中心

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
https://blog.nowcoder.net/n/baeb0058ba4a4ee685d9276b6ca7c6dc
2 回复 分享
发布于 2020-04-22 16:57
占坑了
1 回复 分享
发布于 2020-04-22 11:18
https://blog.nowcoder.net/n/e712e288d2564658bae2e8ceeed91825
1 回复 分享
发布于 2020-04-28 15:00
来啦~
点赞 回复 分享
发布于 2020-04-22 11:21
https://blog.nowcoder.net/n/1b72c05c26a641ca82d1e41634102e53
点赞 回复 分享
发布于 2020-04-22 21:30
https://blog.nowcoder.net/n/d255928e5d69435fbe1d8094a90a6ac7
点赞 回复 分享
发布于 2020-04-22 22:12
https://blog.nowcoder.net/n/1d4b7f75c77d4577874d803c627fdef8
点赞 回复 分享
发布于 2020-04-23 12:25
https://blog.nowcoder.net/n/d19f036669954192b54c33a1ec9a450c
点赞 回复 分享
发布于 2020-04-23 14:25
https://blog.nowcoder.net/n/b45b0ca5273b4f61ad0d4548b564f054
点赞 回复 分享
发布于 2020-04-23 20:54
https://blog.nowcoder.net/n/02d75ee73094440083e66cf8f8fa18ad
点赞 回复 分享
发布于 2020-04-24 02:09
https://blog.nowcoder.net/n/10f31b9631084103ae8e44124faf3b6f 五个小时
点赞 回复 分享
发布于 2020-04-24 02:41
https://blog.nowcoder.net/n/eaf9729a385a4647a5aeb2fd40249322
点赞 回复 分享
发布于 2020-04-27 23:13
感觉写的巨详细了 https://blog.nowcoder.net/n/26b678f8b3f042b0b4b886313dcc0c9b
点赞 回复 分享
发布于 2020-04-28 15:15
https://blog.nowcoder.net/n/7b5476cb0b0d48f0b402621835730e43
点赞 回复 分享
发布于 2020-04-29 17:15
抓住每日一题的尾巴https://blog.nowcoder.net/n/10f3d5c51a11491da2ae56ce7168935a
点赞 回复 分享
发布于 2020-04-30 11:46

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
3 3 评论
分享
牛客网
牛客企业服务