11.1 模拟6考试总结

11.1 模拟6考试总结

送分题

送命系列 万万没有想到还可以二分....虽然觉得实数的二分很玄学就是了,但是好像确实是一个好办法。同时把最短路当作check来用就差不多了

XOR 游戏

这个真是一个玄学题目,涉及到一些我不会的东西,所以考试的时候就有点懵。不过大概意思还是可以理解。顺序找出OXR后最大的数字,然后刷新数组

线性基是一个神奇的东西,一般用于维护XOR运算,考虑:一个数组a[i]表示一个数,其二进制最高为第i位,其他的不管。eg:a[3] = 1..,a[4] = 1...,a[10] = 1.........(注:若不存在,则a[i] = 0)已知线性基,我们就可以轻松求一些东西,eg:求一个序列中任取多少个元素的XOR最大值。
考虑怎么建一个线性基:对于一个数s,从所设最高位插入(设最高位为第i位),
若s的二进制数在第i位为1:
考虑:1:若a[i] = 0,a[i] = s,退出。
Else s ^= a[i],比较i – 1位。
若s的二进制数在第i位为0:
直接比较i – 1位。
我们可以发现:
1:假设一个序列s1..sn用线性基维护,那么用线性基中若干个数可以拼出序列中任意一个数。
2:一个数在插入到最后,其值为0.
(想一想就会发现)
言归正传:对于这道题,我的想法是从左往右,依次求出XOR最大值。即:首先为a1,a2,a3..an,求出a1 XOR其他数所得的最大值a1',序列变为a1',a2,a3...an,再求出a2 XOR a1',a3,a4..an的最大值,变为a1',a2',a3...an,直到求出a1',a2',a3'...an'即为目标的一个可行序列。
复杂度:\(O(n^2 * 64)\).

good

这个就比较有意思了

先看题目:

有一个序列{ai}。一个序列{xi}是good序列,仅当其满足以下条件:
1.xi ϵ{ai}。
2.{xi}单调递增。
3.i < |{xi}|,gcd (xi, xi+1) > 1。
你需要求一个长度最大的good序列。

再看看数据范围

对于100%的数据:\(n ≤ 100000, a_i ≤ 100000, a_i < a_i+1\)

以及告诉你这数组严格递增,等于1、2点没啥用

然后考完又滚去看了看数据,没有复数,等于这个题目基本都是废话....

所以gcd启动!

\(O(n^2)\)算法启动!60分....

实际上可以建图跑最长路,建图反而有点小麻烦,因为朴素的就是\(n^2\)所以要考虑一些东西。

我的想法就是用类似于筛素数的方法做,因为\(a_i<=100000\)所以可以用桶,找合数的时候发现输入数据中存在这个数就可以连边....

当然最短路的复杂度就不用纠结了,明摆着就不讲究了一拳一个讲究怪

posted @ 2018-11-01 17:42  Rendex  阅读(182)  评论(0编辑  收藏  举报
Live2D