首页 > 其他分享 >CF2013

CF2013

时间:2024-09-24 13:12:44浏览次数:3  
标签:那么 gcd sum CF2013 mathcal Bob 我们

A

显然每次操作可以放 \(\min(x,y)\) 个水果,那么答案就是 \(\lceil\frac{n}{\min(x,y)}\rceil\)。

B

我们考虑什么情况剩下的最大。不难发现,我们可以将 \(a_1~\sim a_{n-2}\) 都与 \(a_{n-1}\) 进行操作,然后将 \(a_{n-1}\) 与 \(a_{n}\) 操作,这样的答案就是最大的。

C

考虑找到最长的连续 \(0\) 段,然后将这段往左和往右尝试扩展,直到两边都不可以扩展就是最终的答案了。

D

首先我们观察一下样例,我们发现如果一个序列 \(a\) 可以变成另一个序列 \(b\),那么当且仅当:

  • 对于任意 \(1\le i\le n\),\(\displaystyle{(\sum_{j=1}^{i}a_j-b_j)\ge 0}\)

  • \(\displaystyle{(\sum_{j=1}^{n}a_j-b_j)=0}\)

然后我们感性理解一下 \(b\) 的最小值最大时多少,容易发现如果将所有 \(a_i\) 都减去 \(x\),\(a_i\) 的前缀和都 \(\ge 0\),那么这个 \(x\) 就是合法的,那么这样就可以很容易地算出 \(b\) 的最小值,同理我们也可以容易地算出 \(b\) 的最大值。

E

我们记 \(\gcd(a_1,a_2,\ldots,a_n)=d\),再记 \(b_i=\gcd(a_1,a_2,\ldots,a_i)\),那么显然地 \(b_i\) 不同值的个数是 \(\mathcal O(\log V)\) 的,然后我们发现如果存在 \(b_i=b_{i+1}\) 且 \(b_i\neq d\) 肯定不优,所以 \(b_i\neq d\) 的 \(i\) 也只有 \(\mathcal O(\log V)\) 个。

那么考虑以下的暴力做法。我们枚举 \(a_1\),然后找 \(\mathcal O(\log V)\) 次 \(a_i\),每次也就是找到一个 \(a_x\) 使得 \(\gcd(a_1,a_2,\ldots,a_{i-1},a_x)\) 最小,我们又发现 \(a_x\) 选择了 \(a_1\) 到 \(a_{i-1}\) 肯定不优,所以我们就是在整个 \(a\) 里面找 \(a_x\)。

那么怎么优化呢?我们记 \(cnt_i\) 表示 \(i\) 在 \(a\) 中的出现次数,\(\displaystyle{f_i=\sum_{i|j}cnt_j}\),那么我们做一个差分就可以得到 \(\gcd=x\) 的个数,然后就可以求出最小的 \(\gcd\) 了。

F1

我们考虑每个人的决策。我们记 \(1\) 到 \(x\) 的路径上的点构成的序列为 \(b_1\sim b_m\),那么假设现在 Alice 在 \(l\),Bob 在 \(r\),那么对于 Alice 来说,如果她要从此不再走 \(1\) 到 \(x\) 这条路径,那么就必须满足往其他地方走能走的最大步数要大于Bob 在 \([l+1,r]\) 处往其他地方走的最大步数,对于 Bob 也是类似,我们发现后面那个东西是一个区间最大值,可以直接使用 st 表维护。

标签:那么,gcd,sum,CF2013,mathcal,Bob,我们
From: https://www.cnblogs.com/DerrickLo/p/18428934

相关文章

  • CF2013 F2
    CF2013F2首先你需要知道F1的做法。我将会给出一个\(O(n\sqrtn)\)的,求出整棵树任意节点答案的方法。对于路径上的点\(p_1\simp_m\),终点\(p_m\),起点\(p_1\),设\(p_i\)所经不在路径上的最远长度为\(d_i\)。那么根据F1的结论,我们是通过移动两个指针\(l,r\),不断判......
  • CF2013E prefix gcd
    给n个数,随意排序,所有前缀的gcd的和的最小值。只想到gcd变化是log次的,所以枚举每个作为开头,然后找让gcd变小的接上。可是这样是\(O(n^2)\).注意,最小的数要放最前面。假设\(x,a_1,a_2....\)和\(a_1,a_2,x...\).(x是最小的)我们有\(x+gcd(a_1,x)\leqa_1\),因为gcd的求法是\(a_......