2019 Multi-University Training Contest 9 简要题解

1001 Rikka with Quicksort

先化式子先得到
g m ( n ) = n − 1 + 2 n ∑ i = 0 n − 1 g m ( i ) = n − 1 + 2 n ∑ i = m + 1 n − 1 ( i − 1 ) ∏ k = i + 1 n − 1 ( 1 + 2 k ) g_m(n)=n-1+\frac{2}{n}\sum_{i=0}^{n-1}g_m(i)=n-1+\frac{2}{n}\sum_{i=m+1}^{n-1}(i-1)\prod_{k=i+1}^{n-1}(1+\frac{2}{k}) gm(n)=n1+n2i=0n1gm(i)=n1+n2i=m+1n1(i1)k=i+1n1(1+k2)
然后后面乘积的一项如果忽略 k = i − 1 和 i − 2 k=i-1和i-2 k=i1i2的时候就为 ( i − 1 ) n ( n + 1 ) ( i + 1 ) ( i + 2 ) \frac{(i-1)n(n+1)}{(i+1)(i+2)} (i+1)(i+2)(i1)n(n+1)
然后问题就变成求一个 ∑ i = 1 n i − 1 ( i + 1 ) ( i + 2 ) \sum_{i=1}^{n}\frac{i-1}{(i+1)(i+2)} i=1n(i+1)(i+2)i1
直接分段打表,每隔 1 0 6 10^6 106个数算出一个

1002 Rikka with Cake

由于没有一条切线的 x , y x,y x,y坐标相同,所以容易得到块数等于交点数加一

1003 Rikka with Mista

先折半,然后枚举每一位,算这一位是 4 4 4的个数。
对于第 i i i位,用桶排排出只有后 i i i位的顺序,然后用双指针计算出这一位和为 4 4 4,注意可能为 14..... 14..... 14.....或者 4..... 4..... 4.....

1004 Rikka with Geometric Sequence

容易得到 ∑ p = 1 n ∑ q = p + 1 n [ g c d ( p , q ) = 1 ] ∑ a = 2 ⌊ n p a ⌋ \sum_{p=1}^{n}\sum_{q=p+1}^{n}[gcd(p,q)=1]\sum_{a=2}\lfloor\frac{n}{p^a}\rfloor p=1nq=p+1n[gcd(p,q)=1]a=2pan
然后化一下得 ∑ a = 2 ∑ q = 2 a  ⁣ n φ ( q ) ⌊ n p a ⌋ \sum_{a=2}\sum_{q=2}^{{}^a\!\sqrt{n}}\varphi(q)\lfloor\frac{n}{p^a}\rfloor a=2q=2an φ(q)pan
对于等比序列长度为一或二的情况特殊处理,对于 a > = 3 a>=3 a>=3直接暴力
对于 a = 2 a=2 a=2,先预处理出 1 0 7 10^7 107 φ \varphi φ的值,然后就是类似莫比乌斯反演根号跳的三次方跳,对于 > 1 0 7 >10^7 >107的值就直接杜教筛筛。

1005 Rikka with Game

简单博弈。
对于前缀一段 y y y,双方肯定都不会动。
如果剩下的是 z z z,那么这个 z z z就会变为 b b b,也就是先手把 z z z a a a,后手 a a a b b b,先手结束
否则先手直接结束。

1006 Rikka with Coin

容易发现 10 10 10元不会超过一张, 20 20 20不会超过 4 4 4张, 50 50 50不会超过 1 1 1张,剩下就是 100 100 100元。
暴力枚举每种的张数,然后就能判断是否能构完以及要多少张 100 100 100

1007 Rikka with Travels

枚举每条边,计算出这条边两边的子树的直径,换根 d p dp dp即可。

1008 Rikka with Stable Marriage

根据限制就可以得到答案一定是每次选一对异或和最大的。
对于 a a a b b b都建出对应的 t r i e trie trie
每次询问就暴力 d f s dfs dfs,哪里大就走哪边,对于 a a a t r i e trie trie走完记录下这个走点的最大值和走到最大值要走哪个儿子。
已经走过的就用返回记录的答案。
去掉一对 a a a b b b之后,就将那个 a a a对应 t r i e trie trie上点的答案设为未走过。

1011 Rikka with Segment Tree

F ( n ) = ∑ i = 1 n f ( n , i ) ∗ i F(n)=\sum_{i=1}^{n}f(n,i)*i F(n)=i=1nf(n,i)i
b = l o g 2 ( n ) b=log_2(n) b=log2(n)
F ( n ) = F ( ⌊ n 2 ⌋ ) + F ( ⌈ n 2 ⌉ ) + n ( n + 1 ) 2 + ⌈ n 2 ⌉ ∗ ( n b + 2 ( n − 2 b ) ) F(n)=F(\lfloor\frac{n}{2}\rfloor)+F(\lceil\frac{n}{2}\rceil)+\frac{n(n+1)}{2}+\lceil\frac{n}{2}\rceil* (nb+2(n-2^b)) F(n)=F(2n)+F(2n)+2n(n+1)+2n(nb+2(n2b))
然后就是可以 ∑ i = 1 n / 2 F ( i ) \sum_{i=1}^{n/2}F(i) i=1n/2F(i)推到 ∑ i = 1 n F ( i ) \sum_{i=1}^{n}F(i) i=1nF(i)
然后就是很麻烦的式子了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值