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 

 

posted @ 2018-05-05 11:32  自为风月马前卒  阅读(373)  评论(0编辑  收藏  举报

Contact with me