【CF549B】Looksery Party

本文讨论了一种构造方案,用于解决无向图中每个节点最终权值不等于给定值的问题。通过考虑图中节点权值的取值范围和构造方式,证明了总能找到满足条件的解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意

给出一幅无向图,每个点被选择后邻接的点以及它本身权值都加一,要求构造一种方案使得每一个点i最终的权值不等于给出的Ai,或输出无解。


算法分析

这道题咋一看无从下手,完全没有头绪。

最主要是没有考虑到根本不可能无解。

考虑下面这种构造方式

  • 若图中每个点Ai都不为0,那么所有人都不选就可以满足要求了。
  • 若存在一个点Ai为0,那么将它选上,并将其临接的所有点Ai都减一,重复这两个步骤。

为什么存在0点时需要选它本身而不是选择邻接的点呢?

由于Ai的可能取值有n+1种,但是只有n个点,也就是说总有一种情况是取不到的。
因为当且仅当某个点的Ai为0时算法才需要继续,而某点的Ai为0时我们总能把它本身选上来消除这个点,因此这个问题总是有解的,而且通过以上算法必定能构造一个解。


反思

CF上有很多很多题都是无从入手的,而且这些题很大一部分上都用到了很精妙的构造。所以当常规算法无法满足这道题目的要求时,尝试一下构造一个解吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值