Code+7 总结&题解

好不容易又遇见了一次Code+,好容易又没有拿到衣服。
实在是太菜了啊……


彩蛋题

整个机房集思广益,一起AK……
具体是什么就不赘述了,如果想知道的话去看gmh77的博客。


T1

很显然直接dfs,优先往字典序小的点走。
我做的是hard难度,所以当时没有做这题。于是没有代码。


T2

想到了一个相对于题解来说比较复杂的做法,在这里就不细说了。
讲题解做法。先放两个结论:

  1. 如果不看编号,那两只蚂蚁相撞之后反弹和相撞后穿过是没有分别的。太显然不证明。
  2. 如果看编号,那么一定存在一个分界点,在西边的蚂蚁从西边离开,在东边的蚂蚁从东边离开。证明可以考虑在进行的过程中,每次能够先离开的蚂蚁肯定是边上的蚂蚁。

根据结论1,可以知道最终多少个点往西边,多少个点往东边;再根据结论2,于是就可以求出分界点在哪里。
根据结论1,可以知道最终从西边离开的点离开的时间分别是什么时候;再根据结论2,可以给分界点西边的蚂蚁按照相对顺序分配相应的时间。
于是这题就做完了。

同样这题没有代码。


T3

比赛时手玩出了一个倒推的方法:
可以视作从全 0 0 0的序列开始,每次找到最前面的是 0 0 0的位置 i i i a i a_i ai变为 i i i a 1.. i − 1 a_{1..i-1} a1..i1减一。
记最后一个不为 0 0 0的位置为 n n n,于是一直这样暴力做到操作次数为 n + k n+k n+k为止。
这样的暴力有了 35 35 35分。

比赛之后GMH、DYP等大佬表示他们几乎都切了这题。
考虑从后往前将整个序列构造出来。先二分 n n n
很显然, a n = n a_n=n an=n
如果 n > 2 n>2 n>2,那么就有 a n − 1 = n − 2 a_{n-1}=n-2 an1=n2
能不能这样找到些什么规律呢?
考虑对于 a i a_i ai,它要被操作多少次。假设此时 a i + 1.. n a_{i+1..n} ai+1..n都已经决定了,已经知道了它们要操作多少次,记它们一共要操作 c c c次。
a i a_i ai要操作 x x x次,显然有 a i + c − i x = 0 a_i+c-ix=0 ai+cix=0,所以 a i + c ≡ 0 ( m o d i ) a_i+c\equiv 0 \pmod i ai+c0(modi)
可以看到,如果 i ∣ c i|c ic,那么 a i a_i a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值