随笔分类 - __top-题解
摘要:题目链接 "BZOJ2659" 题解 真没想到,, 观察式子 $$\sum\limits_{k = 1}^{\frac{p 1}{2}} \lfloor \frac{kq}{p} \rfloor$$ 有没有想到斜率? 如果构造函数 $$y = \frac{q}{p}x$$ 那么该式子的含义就是直线在
阅读全文
摘要:题目链接 "BZOJ2553" 题解 话说在前,此题卡精度,最好开long double 先建$AC$自动机 求期望,逆着求,设$f[i][j]$为长度为$i$的串,当前匹配AC自动机$j$节点,之后能产生伤害的期望值 枚举转移,如果转移到一个单词节点,因为产生伤害的单词间不能相连,就直接跳回根节点
阅读全文
摘要:题目链接 "ZOJ3874" 题意简述: 在一个序列中,两点间如果有边,当且仅当两点为逆序对 给定一个序列的联通情况,求方案数对$786433$取模 题解 自己弄了一个晚上终于弄出来了 首先$yy$一下发现一个很重要的性质: 联通块内的点编号必须是连续的 证明: 假设一个联通块编号不连续,设$a$,
阅读全文
摘要:题目链接 "BZOJ4503" 题解 水水题。 和残缺的字符串那题几乎是一样的 同样转化为多项式 同样TLE 同样要手写一下复数才A C++ include include include include include include include define Redge(u) for (in
阅读全文
摘要:题目链接 "BZOJ2697" 题解 好水好水的贪心。。。 容易发现每种特技只表演两次,多表演没有意义,而且差距越长收益越大 然后就可以贪,最大的放两端,次大的往里,然后是第三大....... 证明很简单,假设将两个特技时间交换,那么会产生交换距离乘以$C$的差值的贡献,显然就不优
阅读全文
摘要:题目链接 "BZOJ2795" "BZOJ2890" "BZOJ3647" 题解 三倍经验! 我们要快速求区间最小循环节 我们知道循环节有如下性质: ①当$L$为循环节长度,那么$s[l...r L] = s[l + L...r]$且$L | (r l + 1)$ ②如果$L$为循环节,那么$L x
阅读全文
摘要:题目链接 "BZOJ2823" 题解 "最小圆覆盖" 模板 都懒得再写一次 C++ include include include include include include include define LL long long int define Redge(u) for (int k =
阅读全文
摘要:题目链接 "BZOJ2924" 题解 题面有误。。是$45°$ 如果两个点间连线与$x$轴夹角在$45°$以内,那么它们之间连边 求最小路径覆盖 = 最长反链 由于$45°$比较难搞,我们利用复数翻转一下,逆时针旋转$45°$ 这样就求一条从左上到右下的最长链 我们将所有点按$x$排序,令$f[i]
阅读全文
摘要:题目链接 "洛谷P3759" 题解 树状数组套主席树板题 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) define REP(i,
阅读全文
摘要:题目链接 "BZOJ4539" 题解 我们把每次复制出来的树看做一个点,那么大树实际上也就是一棵$O(M)$个点的树 所以我们只需求两遍树上距离: 大树上求距离,进入同一个点后在模板树上再求一次距离 讨论好一些情况即可 然后求子树第$k$大的点要用主席树 没了 C++ include include
阅读全文
摘要:题目链接 "Mychael vs Kid" 题解 先说说这题的由来及前身 前身 首先有一个很经典的题目: 维护区间加,查询区间$gcd$ 如果强行用线段树维护的话,区间加之后就没法直接确定当前区间的$gcd$,不可直接维护 这个时候就用到了$gcd$的一个性质: $$(a,b) = (a b,b)$
阅读全文
摘要:题目链接 "BZOJ2668" 题解 容易想到由$S$向初始的黑点连边,由终态的黑点向$T$连边,然后相邻的点间连边 但是这样满足不了交换次数的限制,也无法计算答案 考虑如何满足一个点的交换次数限制 当然是拆点 但是一个位置被经过时会被交换两次,而终点和起点都只交换了一次 那么我们就拆成三个点$le
阅读全文
摘要:题目链接 "BZOJ1596" 题解 先抽成有根树 设$f[i][0|1][0|1]$表示以$i$为根,儿子都覆盖了,父亲是否覆盖,父亲是否建塔的最少建塔数 转移一下即可 C++ include include include include include include define Redge
阅读全文
摘要:题目链接 "BZOJ3427" 题解 容易发现最终序列一定是$\{ 1,0,1\}$组成的 因为如果有一个位置不是,那么这个位置一定大于$1$,那么上一个位置一定为$1$,所以该位置一定加到过$1$。由于$1$已经满足条件,而经分析得大于$1$会使下一个位置的决策不优反劣,所以一定不会大于$1$ 那
阅读全文
摘要:题目链接 "BZOJ3526" 题解 思来想去,发现很显然可以用线段树维护 每个区间保存所有合法方案的左右端点【当左端点一定是,右端点当然存最小的那个就行了】 这么整的数,$\frac{1}{1000}$的概率啊23333
阅读全文
摘要:题目链接 "BZOJ3542" 题解 线段树裸题,,对每一行每一列开线段树 由于坐标很大,用$map$维护根下标 化一下式子,只用维护区间和,区间平方和,区间存在的个数 C++ include include include include include include define Redge(
阅读全文
摘要:题目链接 "BZOJ3832" 题解 神思路orz,根本不会做 设$f[i]$为到$i$的最长路,$g[i]$为$i$出发的最长路,二者可以拓扑序后$dp$求得 那么一条边$(u,v)$的对应的最长链就是$f[u] + 1 + g[v]$ 我们人为加入源汇点$S$,$T$,$S$向每个点连边,每个点
阅读全文
摘要:题目链接 "BZOJ5月月赛" 题解 好弱啊QAQ只写出三题 A 判断多干个数乘积是否是某个数的倍数有很多方法,比较常用的是取模,但这里并不适用,因为模数不定 会发现数都比较小,所以我们可以考虑分解质因子,查找一下区间各个质因子数是否符合要求 用主席树维护即可 由于$10^5$以内不同质因子数最多的
阅读全文

浙公网安备 33010602011771号