首页 > TAG信息列表 > ccnt

柏松分布

    如何理解柏松分布? https://blog.csdn.net/ccnt_2012/article/details/81114920

[IOI2020]连接擎天树

传送门 IOI的题思维难度确实不小,但是很多题的代码却没有那么难写,也希望这是以后OI以及ACM的出题趋势吧。 首先两个点之间的路径条数不可能等于3,因为如果两点间有3条不同的路径,那么这个图就一定就会有4条路径,见下图: 这里能看出1和4之间有3条路径,但2和3之间就有2-1-3,2-1-4-3,2-4-3

BZOJ 2707: [SDOI2012]走迷宫

设 \(f_i\) 为 \(i \to t\) 的期望步数 转移方程为 \(f_u = \sum_{u \to v} \dfrac{f_v}{outdeg_u} + 1\) 先tarjan缩点 然后强连通分量内进行高斯消元即可 把出边到的点不在强连通分量内的 \(\dfrac{f_v}{outdeg_u}\) 作为常数即可 #include <bits/stdc++.h> #define pb push_bac

BZOJ 5544: [PA2019]A + B

设 \(f_i\) 为前 \(i\) 位能由多少种方案组成 那么要么就是正常的得到方式,可以由 \(f_{i-1}\) 转移来,方案数为 \(f_{i-1} \times cnt_{s_i}\) 错误的得到方式就由 \(f_{i-2}\) 转移得来,方案数为 \(f_{i-2} \times cnt_{s_{i-1}, s_i}\) #include <bits/stdc++.h> #define pb push_

BZOJ 3489: A simple rmq problem

对每一个位置 \(i\),求出其上一次出现的位置 \(pre_i\) 以及下一次出现的位置 \(next_i\) 对一个询问来说,就是查询 \(pre_i\) 在 \([0,l-1]\),\(i\) 在 \([l, r]\),\(next_i\) 在 \([r + 1, n + 1]\) 这个长方体内的最大值 那么可以用KD-tree维护 空间复杂度为 \(O(n)\),时间不知,但是

Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!) F. Kuroni and the Punishment

可以发现答案不大于 \(n\),因为如果都是奇数可以让它们都变成偶数 如果我们假定了一个 \(\gcd\),我们就可以线性得到答案,每个数向上或者向下移动到 \(\gcd\) 的倍数位置 因为答案不大于 \(n\),那么就有至少有 \(\lceil \frac{n}{2} \rceil\) 个数操作次数不大于 \(1\) 那么 \(\gcd\)

BZOJ 5052: 繁忙的财政官

对于每一个左端点,考虑其右边那些能更新答案的点 先考虑在其右边且值比当前大的,小的可以将值翻转后做一遍 即对左端点 \(i\),找到 \(j>i\) 满足 \(a_j>a_i\) 首先找到一个 \(j\),下次在 \(j\) 右边找到一个 \(k\) 满足 \(a_j > a_k > a_i\) 但是这样的点对还是有很多,考虑找下个 \(k\)

BZOJ 1086: [SCOI2005]王室联邦

维护一个栈,从任意一个节点开始 dfs,在回溯时加入到栈中。 dfs每一个子树之后,若相对于刚进入该节点时栈的大小,新增加的节点超过 B,就将它们分为一块 这样分完保证不超过 2B,而整个dfs结束之后,若栈中还有节点,就把它们归为最后一块 #include <bits/stdc++.h> #define pb push_back #defi