A. [2021.2.16多校省选模拟18]无向图(异或的性质/排序处理)

A. [2021.2.16多校省选模拟18]无向图

给定一张无向连通图,要求删除边使得奇度数点数量最大,输出字典序最大的一组解。

首先发现删除图上一条链的作用就是使得两端点奇偶性变化,中间点不变,然后我们只需要处理图上偶度数点即可,考虑使用若干条链将它们连接,因为异或的性质可以发现一个类似反悔贪心的性质,每条边选不选只和被覆盖次数奇偶性有关,所以只要图联通一定就有解。然后考虑字典序的限制,考虑贪心,每次考虑编号最小的边,每次删边,如果图仍然联通那么就可以删去,删边不好处理我们考虑加边,可以按照编号从大到小加边,形成一个最大生成树。

然后如果此时只有偶数个偶度数点那么发现解是一定的,因为每条边两边要么都是偶数个,要么都是奇数个,如果是奇数个这条边一定被覆盖奇数次,否则一定覆盖偶数次。

因为一个图的度数总和是偶数,所以奇度数点一定有偶数个,所以如果原图有奇数个点,那么就一定有奇数个偶度数点,所以我们需要考虑舍弃一个点,仍然考虑贪心,找到生成树上编号最小的边,然后将其保留,树被分成奇偶两部分,对于偶这一部分可以直接求解答案,奇这部分继续求解。

有两个问题,一个是快速找到那一边是奇树,一个是快速找到编号最小的边。
第一个问题考虑在切树的过程中,由于每次都是删去一个偶树,所以这个奇树的方向是不变的,所以我们只需要一开始预处理每一条边的方向即可。
第二个问题考虑我们每次这个编号是单调递增的,所以我们只需要排序之后依次处理,遇到不合法的边跳过就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值