AGC038 部分题解
E题意有一个随机数生成器,生成 $[0,n-1]$ 之内的数,生成第 $i$ 个数的概率为 $\frac{A_i}{S}$,其中 $S=\sum_{i=1}^n A_i$。当 $\forall i \in [0,n-1]$ $i$ 被生成至少 $B_i$ 次时停止生成,求期望生成次数,对大质数取模。题解设第 $i$ 个数最后一次被随机到的时间为 $t_i$,答案就是 $\max t_i$ 的...
E题意有一个随机数生成器,生成 $[0,n-1]$ 之内的数,生成第 $i$ 个数的概率为 $\frac{A_i}{S}$,其中 $S=\sum_{i=1}^n A_i$。当 $\forall i \in [0,n-1]$ $i$ 被生成至少 $B_i$ 次时停止生成,求期望生成次数,对大质数取模。题解设第 $i$ 个数最后一次被随机到的时间为 $t_i$,答案就是 $\max t_i$ 的...
A打表可以发现 $k>1$ 先手必胜,$k=1$ 取决于 $n$ 的奇偶性。具体证明:考虑如果 $n$ 是奇数的话,先手第一步取中间的那一块,序列变成了互相独立的两部分,之后先手只需要在没有被后手操作的块里模拟后手动作即可。如果 $n$ 是偶数的话,$k>1$ 也可以类似的划分成两段长度相等的段。$k=1$ 等价于每次只能取一个,所以 $n$ 是偶数的话后手能赢。#include...
A判断一下前面能否空出来就就行,也就是 $l \geq r-l+1$。#include <bits/stdc++.h> #define fi first #define se second #define db double #define U unsigned #define P std::pair<int,int> #define LL long long #d...
A. 跳石头首先我们观察一下青蛙是怎么跳的:对于一个断点 $(i,i+1)$,如果有 $x$ 只青蛙往左跳,那么一定有 $x$ 只青蛙往右跳,所以 $a_i$ 一定是偶数。并且我们发现从 $a_i$ 到 $a_{i+1}$,变化的只可能是 $i+1$ 这一个青蛙,也就是有 $|a_i-a_{i+1}| \in \{0,2,-2\}$。我们考虑 $a_i$ 到 $a_{i+1}$ 的变化:如果...
A. 异或考虑第 $i$ 位的贡献,发现每 $2^i$ 个数才会变化一次,所以答案是 $\sum_{i \geq 0} \lfloor\frac{n}{2^i}\rfloor $。考场上降智了,写了个枚举前缀卡到哪里算剩余贡献的垃圾做法。。#include <bits/stdc++.h> #define fi first #define se second #define db...