今天到教室交作业领书学生大会所以没有完整考试,大概是十点多来机房十一点半下考,只写了第一题暴力,其他的还没仔细想出来,第二题暴力没
T1 sequence 30 暴力就不说了。
我们记 sum 为原序列一段区间的和,N 为这段区间元素个数,那么有: l<=sum<= r , l*N<=sum<=r*N ,于是我们在[
al
,
ar
]中同时减去l,如果 [
al
,
ar
] 的和小于零,则说明平均数不在范围内,同理 [
al
,
ar
] 区间减去 r,如果 [
al
.
ar
] 的和大于零,也说明平均数不在范围内。所以可以求出 ai 数组减去 l 的前缀和
S1i
与减去 r 的前缀和
S2i
,考虑[a,b],
当
S1b
-
S1a−1
< 0 时,这个区间是不符合要求的,即
S1a−1
>
S1b
,所以我们只需求逆序对个数就行了。减去 r 时正好相反,将 S2 翻转一下求逆序对数就行了。因为我们求的是逆序对,而逆序对又是不符合要求的情况,因此将总的情况减去不合法的情况就可以了。
O( n log n )
T2 graph 0 暴力没打完,写了个随机数= =然后全WA
现在只懂(最多)40分做法:
把所有符合要求的边提出来,在其中选 m 条边,再判断一下每个点的度数是否为偶数就行了。
O(
2E
* n )
正解是状压DP,我暂时还没复习到,不过这又让我发现我忽略掉的知识点!
T3 exploit 0 这个本来想推个dp无奈没时间,况且考虑到精度问题我向来不会做就也没写。
100%:【反着考虑】
F[i]表示第 i–n 个星球的最优收入,且假设从第 i 个星球开始时钻头能力为 1。
转移过程:如果在第 i 个星球开采,那么第 i+1–n 个星球的初始钻头能力就是 1*(1-0.01k)。
换句话说,就是 F[i+1]*(1-0.01k)。
所以 F[i]=max{F[i+1],F[i+1]*(1-0.01k)+a[i]}
//到这里都觉得这道题这样想还挺简单的。
对于维护型星球,大同小异。就系数和代价的正负而已。
//上面这句不是很明白啊。。
O(n)
晚上复习+学习STL各种操作