G. 手工巧克力

题目要意:求最小的kk,使得对于集合1,2,..n{1,2,..n}的任意有kk个元素的子集SS,都存在三个数a,b,c∈1...n,a≠b≠ca,b,c \in {1...n},a \neq b \neq c,满足a+b,a+c,b+c∈Sa+b,a+c,b+c \in S

预期通过数:20

实际通过数:0?

怎么给我干成防ak了?

关键词:数学,构造,打表乱猜

每场比赛都应该有激动人心的guess环节

该题改编自CMO2012 Q6

不过,这里是算法竞赛,我们不用证明,猜到就行,具体的证明可以看这个

除了样例提到的n=6n=6的情况外,答案都是n2+2\frac{n}{2} +2

以下提供一些比较算法竞赛的做法

解法1 构造

我们可以尝试构造一些尽可能长的非法序列

容易想到全体奇数是一种可能,因为奇+奇=偶,此时选择的a,b,ca,b,c不论任何奇偶性都不可能成立

那么我们尝试加入一个偶数,如果加入22,依然不影响,因为不存在两个不同的正整数的和为22

再加入其他的偶数,都可以构造了

大胆的猜测答案是n2+2\frac{n}{2} +2

解法2 打表

码力比较强的同学很容易以实际上是O(n3(n2+2)!)≈O((n−2)!)O(n^3(\frac{n}{2} +2)!)\approx O((n-2)!)的复杂度打出一张表(大概能打到n=12n=12),非常敢于guess的同学就能猜出答案了

0 条评论

目前还没有评论...

信息

ID
85
时间
ms
内存
MiB
难度
5
标签
(无)
递交数
14
已通过
20
上传者