codechef MAY18 div2 部分题解
Posted 自为
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codechef MAY18 div2 部分题解相关的知识,希望对你有一定的参考价值。
T1
https://www.codechef.com/MAY18B/problems/RD19
刚开始zz了,其实很简单。
删除一个数不会使gcd变小,于是就只有0/1两种情况
T2
https://www.codechef.com/MAY18B/problems/XORAGN
我们可以把B序列看做一个矩阵
那么$A(i,j)$和$A(j,i)$会抵消掉
因此答案就是$\\sum_1^n A(i,i) + A(i,i)$
T3
https://www.codechef.com/MAY18B/problems/MTYFRI
答案的序列是固定的,因此后手会把自己最小的换做对手最大的,
贪心求解,两个堆维护最小最大值
T4
https://www.codechef.com/MAY18B/problems/DBFB
按照套路,考虑A,B对答案的贡献,A只可能作为第一项,B只可能作为第二项。
统计出斐波那契数列中A,B的出现次数
A,B会被枚举M次,因此答案最后乘M
T5
很有思维量的一道题
首先,对于每个数,它能够被枚举到的顺序是一定的
根据题目不难得出,它所在序列的各个值应该是单调递增的。
那么我们可以把序列求出来,对于这个点,从它左边比它大的个数和它右边比它小的元素个数里面取max
-1的情况需要特判
T6
很有思维量的一道题,前前后后做了3天才A掉
刚开始zbq想了一个三维dp,应该可以做已AC,但是太麻烦了好像也不是很麻烦
考虑每个数,当且仅当它左边右边都比它大时才能转移
这样我们用$f[i]$表示一定选$i$时的最优答案,转移的时候枚举前面的点
这样看似是$O(n^2)$的,但是很显然,答案序列的函数图像中大多数都是单调递增的
因此我们只要往前枚举一部分就好,亲测1000可过
目前rank
顺便Orz zbq
以上是关于codechef MAY18 div2 部分题解的主要内容,如果未能解决你的问题,请参考以下文章