Take a sad song and |

ethan0328

园龄:9个月粉丝:2关注:6

构造题做题记录

更新中。

加训构造。/fendou

CF1917E

发现我们如果把一个 2×2 的矩阵填满 1,不会有影响。

k4 的倍数,直接填就可以了。

k 为奇数显然无解,因为你无法让每行奇偶性相同。

k42,如果 k2n×n2 时无解。

不然的话,我们可以在一个 4×4 的矩形里把 (1,1)(1,2)(2,1)(2,3)(3,2)(3,3)1,剩下直接填。

注意到 k=n×n6 时这时爆的。我们可以在 4×4 的矩形里多填 (1,3)(1,4)(4,3)(4,4)

ATarc122e

题意其实就是每位填的数要保证 gcd(lcmj<i(xj),xi)xi

考虑从后往前填数,每次只要把任意满足条件的填入即可。

注意到 gcd(lcmj<i(xj),xi) 其实相当于 lcmj<i(gcd(xj,xi)),然后就可以直接枚举做了。

CF1667C

假如我们放 k 个后,假设放在左上角,使得右下只有 (nk)×(nk) 个格子没被覆盖,我们要用对角线去覆盖它们。

(nk)×(nk) 个格子有 2×(nk)1 条对角线,所以 k2×(nk)1,即 k2n+13

k=2n+13,我们可以考虑先在 (1,1) 放一个后,然后横坐标 +1,纵坐标 +2,再放一个后,不停地放,直到出右上角的 k×k 的矩形为止。然后我们再横坐标 +1,纵坐标为 2 的点开始用同样的方式放。

为什么这是对的?我们不妨给对角线标号,令 (k+1,k+1) 所在的对角线为 0,它左边的对角线分别为 1,2,右边的对角线分别为 1,2,我们第一个在 (1,1) 的后覆盖了对角线 0,后面每次的后覆盖了上一条 1 的对角线。而在 (k2+1,2) 的点覆盖了对角线 nk1,后面每条覆盖了上一条 1 的对角线。

AThitachi2020c

首先,只有当两个数模 3 都为 1 或都为 2 时才可能不合法。

我们将这棵树黑白染色,两个点相距为 3 必定一个为黑点一个为白点。

当黑点和白点数量都大于 n3,我们可以模 31 全填黑点,模 32 全填白点,剩下随便填。

当黑点和白点数量中有一个小于 n3,不妨假设时黑点。我们可以把黑点用模 31 的数填满,剩下全填白点。

CF297C

有一个比较牛的构造。

考虑将序列 s 排序后平均分为 3 段。

  • 对于第 1 段,构造 ai=ibi=siai

  • 对于第 2 段,构造 bi=iai=sibi

  • 对于第 3 段,构造 bi=niai=sibi

解释一下为什么这是对的。

对于 b,显然第 2 段和第 3 段的是两两不同的,符合要求。

对于 a,第 1 段和第 3 段内部一定是单调递增的,而第 3 段所有数一定大于第 1 段,所以两两不同,符合要求。

CF1028E

有一个简单的想法是构造一个序列满足 ai<ai+1ai+1ai=bi。容易想到构造 ai=j=inbi

但如果存在 ai+1|ai 是会爆。所以我们可以把 b 中的最大值移到 bn 的位置,同时要满足 bn1bn,这样就能保证不存在整除关系。

如果 b1=b2=...=bn1=0 是会爆,因为 bnmodb1=0。所以我们让 ai=(j=inbi)+bnan=bn 就行了。

但当所有 b 相等时不存在一个这么一个最大值。可以证明,只有 b1=b2=...=bn=0 时才有解。

如果 b1=b2=...=bn=xx 不为 0),一定存在 ai<ai+1,即 ai=x,那所以 aj 必为 x 的倍数,则必有 aimodai+1=0,所以不成立。

posted @   ethan0328  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起