AtCoder Grand Contest 003

A.傻子题..

B.就让你把相邻或自身的俩俩配对,不能跨度大于1,

直接考虑先把自己配对了,那么剩下的只能和相邻的配对了

但考虑到可能存在跨度大于1,且俩俩为奇数的情况,考虑在配对自己时给别人留一点...

然后就得到了算法...

C.大水题.只用考虑到奇数位,偶数位交换不用代价.然后拍完序后乱搞就好了....

嘛,细想一下很多要注意的...

D.让你在序列中取一个集合,使得集合内俩俩相乘不为完全立方数

一开始本来是想网络流的,但一想,不对了...只处理过相加的情况

于是应该向数论方向想,

先考虑分解质因数....嘛相称,只要质因数的指数都是3的倍数就是完全立方数

那么,很显然,对于每个质数mod3,是等效的...

就有了贪心的做法...

考虑到对于一个模过的数,与其相乘是立方的模过的数是唯一的...

那么统计一下每一个数与其相乘是立方数的个数

然后贪心,又大到小排除每一个数

ok啦

E.题意省了...

嘛,这种题,正着来只能暴力,所以只能到着来喽

考虑到从最后一次到倒数第二次操作

序列被分成两部分,第一部分是1---A[i-1],另一部分第二部分是A[I-1]-----A[I]...

很容易写出: 序列中每个数字  F(第L次操作,序列长度) = 多少倍*F(L-1,A[L-1])+F(L-1,A[L]%A[L-1])

 ....

然后就没有了

但会爆炸啊(我也没试过)

嘛,考虑优化

对于后面那个东西应该可以优化(有点多余的样子(指式子,不是这个优化))

发现有些时候会变成F(L-1,A[L])

然后又会出现F(L-2,A[L])

.

.

.

然后就可以得知,F(L-1,A[L]%A[L-1])这个东西其实是要快速找前面离他最近的且小于等于他的A[K]

....

就没了

F不是很可做的样子

嘛,明天可能就要停更,,,,

早上8点要起来上课.....下午还要写作业....晚上能做几题是几题把....

神がいた世界、その指先で映りのは、わが身が受けた大きいこと、また「責任」と言われろ?

原文地址:https://www.cnblogs.com/shatianming/p/12243331.html