http://codeforces.com/gym/102832
充游戏币,首充可以获得优惠,之后充值就没有优惠了,问你x元最多能拿到多少游戏币。
$$
\begin{array}{|c|c|c|}
\hline
\text{Price (RMB yuan)}
& \text{Normal amount (coupons)}
& \text{First recharge reward (coupons)}
\ \hline 1 & 10 & 8
\ \hline 6 & 60 & 18
\ \hline 28 & 280 & 28
\ \hline 88 & 880 & 58
\ \hline 198 & 1980 & 128
\ \hline 328 & 3280 & 198
\ \hline 648 & 6480 & 388
\ \hline
\end{array}
$$
http://codeforces.com/gym/102798
有一个桥,桥两边都有n个老人,你桥的一边,你可以花时间x把一个老人带到对面,然后你可以接着把那边的老人带回来,你也可以原地等待,所有老人移动一次以后需要休息t分钟,问你至少花费多少时间,能让所有老人都互相跑到对面,然后又回到原本的位置。
1 |
|
https://ac.nowcoder.com/acm/contest/15880?&headNav=www
随机n个n维01向量,询问这个n个向量线性无关的概率
考虑第一个向量,可以有$2^n-1$选择,你不可以选择全为0的向量
然后考虑与第一个向量线性无关的向量,可以有$2^n-2^1$个,因为第一个向量的0倍和1倍不能选。
然后考虑与第一个和第二个向量线性无关的向量,可以有$2^n-2^2$个
于是最终的方案数为$\begin{aligned}\prod_{i=0}^{n}2^n-2^i\end{aligned}$ , 考虑分母为$2^{n\cdot n}$
$$
\begin{aligned}
&\frac{\begin{aligned}\prod_{i=0}^{n-1}2^n-2^i\end{aligned}}{2^{n\cdot n}}
\&=\begin{aligned}\prod_{i=0}^{n-1}1-\frac{2^i}{2^n}\end{aligned}
\&=\begin{aligned}\prod_{i=1}^{n}1-2^{-i}\end{aligned}
\end{aligned}
$$
https://ac.nowcoder.com/acm/contest/15801?&headNav=www
n个点的带权树,你可以删边,但要保证删边后图联通,可以加边,但要保证加边后所有简单环的异或和为0。
现在你可以随便操作,需要操作后的树的边权和最小。
题目中的两个操作都不会影响两个顶点之间路径的异或和。所以实际上相当于给了一个完全图,两个点之间的边权就是原始树上这两个点之间的路径的异或和,你要求一个最小生成树。
很多人都知道最小生成树有Kruskal算法和Prim算法,但是很少有人知道第三个算法:Boruvka算法,因为这个算法不常用。
https://ac.nowcoder.com/acm/contest/15789
定义
$$
f_c(x)=
\begin{cases}
max_{i=1}^n c\cdot f_c(\gcd(i,x)) &x\gt1\
1&x=1
\end{cases}
$$
输入c和x
f函数迭代次数越多,则值越大,也就是x取gcd的次数越多越好,所以每次选择x的最大因子即可。最终使用快速幂解决。
1 / 2