CYEZ 模拟赛 1

前言

抽象。打不过暴力老哥,确实萌新。

A 人类基因

萌萌题。代码。

B Bribing Friends

O ( n 4 ) O(n^4) O(n4) 做法:代码。

正解:确定选择奶牛方案时,让甜筒优先作用于 x x x 较小的奶牛。那么按 x x x 排序后,最终的答案一定形如:用甜筒处理前几个,用甜筒和前混合处理某一个,用钱处理后几个。

分别 01 背包处理,枚举断点即可。代码

C 禅与园林艺术

抽屉原理考虑前缀和。余数有 p p p 种,如果区间长度 > p >p >p,显然有两个前缀和的余数相同,答案为 0 0 0。否则暴力计算。时间复杂度 O ( m p 2 ) O(mp^2) O(mp2)。代码。

没开 long long 挂成 72。

D 心理学概论

数据很抽象,暴力能过。

从大往小枚举 a i a_i ai 作为 max ⁡ a \max_a maxa,则只需关心比 max ⁡ a \max_a maxa 大的,相当于每次加入一个物品。

对于每一个可能的 max ⁡ b \max_b maxb,需要求出大于 max ⁡ b \max_b maxb 的最大 c c c,要维护一个 c c c 的后缀最大值。
全局维护一个 max ⁡ b + max ⁡ c \max_b+\max_c maxb+maxc 的最小值。

考虑权值线段树。

具体来说,随着 max ⁡ b \max_b maxb 的增大, max ⁡ c \max_c maxc 一定是单调不增的。那么加入一个物品 max ⁡ c \max_c maxc 发生改变的一定是一段连续区间,二分找到区间更新。对于区间 max ⁡ c \max_c maxc 修改的区间,其 max ⁡ b \max_b maxb 取区间最左 b b b。时间复杂度 O ( n log ⁡ 2 n ) O(n \log^2n) O(nlog2n)

具体实现与代码

总结

预估 100 + 76.2 + 100 + 20 100+76.2+100+20 100+76.2+100+20,实际 72.7 + 38.1 + 72.7 + 9.1 72.7+38.1+72.7+9.1 72.7+38.1+72.7+9.1

发挥抽象。A B 理解错题意,C 想到了抽屉原理但没开 long long,D 的暴力没打好。

你可能感兴趣的:(题解,游记,c++)