摘要:
"题目" 人傻常数大,bz显然是会$T$的 但我就是来复习一下$lct$的板子的 发现就是让你最小化两点之间的最大路径,于是自然地想到了最小生成树 发现删除操作好像不能在最小生成树上搞,于是我们离线下来倒序处理 先用从头到尾都没有被删除的边做成一棵$MST$ 每加进来一条边,如果这两点不连通,那就直 阅读全文
摘要:
"题目" 抄$yyb$的题解真爽啊 根据一个非常显然的性质两个 前缀的最长公共后缀 的长度是后缀树上两个节点对应的$lca$的$len$ 每次询问是一个区间,好像不是非常可做啊 于是我们可以先离线,利用$set$在$parent$上启发式合并,显然两个节点只需要在$lca$处统计贡献 当我们启发式合 阅读全文
摘要:
"题目" 人生第二道可怜题,依旧来自于$JXOI$ 首先发现这个东西长得和分手是祝愿差不多,于是考虑一下贪心 显然贪心的策略应该是从小到大一个一个试,遇到一个不能表示成前面的数的倍数的数就把这个数选上 先用类似埃筛的东西求出这样的数的个数$m$ 如果$t(p)=i$,那么这$m$个都必须在$i$步之 阅读全文
摘要:
"题目" 这真是一道神仙的一批的题目 定义$s(i,j)$表示从点$i$到点$j$经过的颜色数量 设 $$sum_i=\sum_{j=1}^ns(i,j)$$ 求出所有的$sum_i$ 考虑点分治 对于一个点我们用两种方式来统计其答案 1. 这个点作为分治重心时,分值区域内所有点到这个点贡献 1. 阅读全文
摘要:
"题目" 求出$mod\ 3=0$的路径条数,乘$2$加$n$除以$n^2$就是答案 点分治就好了 代码 cpp include include include include define maxn 20005 define re register define inf 99999999 defi 阅读全文
摘要:
题目 首先看到要让一个平均值最大,想到 \(0/1\) 分数规划 二分一个 \(mid\) 作为答案 如果存在 \(\displaystyle \frac{\sum_{e\in S}v(e)}{\sum_{i=1}^{|S|}1}>mid\) 那么 \(\displaystyle \sum_{e\i 阅读全文
摘要:
"题目" 我终于来抄点分治的板子了 随便说一点理解吧,点分治就是一种能求某种特定树上路径数量的算法 就是选择一个分治重心,统计一下以这个重心为$LCA$的路径的信息 之后对这个重心的子树再次分别选择分治重心,递归下去完成统计 这道题还用了一下容斥的思想 代码 cpp include include 阅读全文
摘要:
"题目" 我还没疯 发现如果我们将血量抽象成点,一轮操作抽象成图上的一条边,我们如果能求出每一条边的概率,我们就能搞一下这道题 假设我们求出了这个图$E$,设$dp_i$表示从$i$点到达$0$点的期望路径长度 那么我们可以列出如下的方程 $$dp_u=\sum_{(u,v)\in E}P(u,v) 阅读全文
摘要:
"题目" 杜教筛板子了 cpp include include include include include define re register define maxn 5000005 define LL long long using namespace std::tr1; unordered 阅读全文
摘要:
"题目" 发现无论是什么时候,毕姥爷的概率题我就是不会做 首先先看到一个显然的性质,就是一个开关最多被操作一次,于是整个序列最多也就被操作$n$次 看到有$50$分$k=n$,于是只需要求一下最少几步关掉全部的灯即可 这里需要一个贪心,显然我们需要先去关编号大的灯,编号大的灯只会影响它的约数不会影响 阅读全文