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点要起来上课.....下午还要写作业....晚上能做几题是几题把....
神がいた世界、その指先で映りのは、わが身が受けた大きいこと、また「責任」と言われろ?