摘要:
"题目" 思博题,发现一旦路径太长我们可以来回走最后一条边,但是这样并不能改变路径长度的奇偶性 所以求一下所有点之间奇最短路和偶最短路就好了,直接暴力$BFS$即可 有一个烦人的特判 代码 cpp include define mp std::make_pair define re register 阅读全文
摘要:
"题目" 三天终于把$APIO$做完了 这题还是比较厉害的,如果不知道这是个分块应该就自闭了 考虑一个非常妙的操作,按照 操作 分块 我们设一个闸值$S$,把$S$个边权修改操作分成一块,把所有的边分成两类,一类是在这个块内被修改过的边,一类是没有被修改过的边 我们把没有被修改过的边按照边权离线,同 阅读全文
摘要:
"题目" 显然一个熟练的选手应该能一眼看出我们需要维护点对的答案 显然在断开或连上某一条边的时候只会对左右两边联通的点产生贡献,这个拿$set$维护一下就好了 那现在的问题就是怎么维护了 考虑一个非常$sb$的问题,我们只想知道一个点对$(x,y)$从开始到某个时间$t$有多少个时间是联通的 如果$ 阅读全文
摘要:
"题目" 考虑推柿子 最开始的想法是如果两个$t$在$mod\ B$意义下相等,那么只需要比较一下$(t+\left \lfloor \frac{t}{B}\rfloor \right)mod\ A$就好了 显然$t=t\% B+B\times \lfloor \frac{t}{B} \rfloor 阅读全文
摘要:
"题目" 考虑对于每一个$a_i$计算有多少个$0 define LL long long define re register const int maxn = 1e6 + 5; LL T, ans, p[maxn]; std::vector s[maxn], v[maxn]; int len, 阅读全文
摘要:
"题目" 好一道语文题 首先你得先排序一下,就是高度为第一关键字从大到小,权值为第而关键字从小到大 第一问看上去非常简单,我们考虑每次把一座山插入到已有的排列中去,这样我们能用乘法原理合并答案,如果没有高度相同的,每个山的贡献就是$min(a[i],v,i)$,如果有高度相同的,我们就一次处理完所有 阅读全文
摘要:
"题目" van了,不会反演了,之后复习了一下午反演终于会做了 这个东西一看就很神的样子 $$\sum_{i=1}^n\sum_{j=i+1}^n[{(i+j)}|i\times j]$$ 先分析一下,这个${(i+j)}|i\times j$有什么含义吧 首先这是一道数学题,那么就极有可能需要往$ 阅读全文
摘要:
"题目" 好题好题 这个分母一直在变,看上去完全不知道怎么去算 考虑容斥一波,设$g_i$表示至少有$i$死在$1$之后的概率,那么答案就是$\sum_{i=0}^n( 1)^ig_i$ 考虑一下$g_i$怎么算,发现又不会算了 考虑一个问题,就是现在有两个人$i,j$,其中$i$比$j$先死的概率 阅读全文
摘要:
"题目" 众所周知,除数个数函数$\sigma_0=I^2$,$I$就是狄利克雷卷积里的$1$函数 于是熟悉狄利克雷卷积的话很快就能看出我们要求的就是$I\times I^{k}$,即$I^{k+1}$,我们给这个函数起一个名字叫$f^{k+1}$ 显然这个东西是积性函数,于是我们考虑一下指数次幂的 阅读全文
摘要:
"题目" 也不是很知道为什么这道题要和某$B$姓算法扯上关系 首先有一个非常显然基于那个$B$姓算法的做法,每次启发式合并$trie$即可,复杂度是$O(n\ logn\ loga_i)$ 这个做法太无脑了,考虑一个高端的做法,只需要$kruskal$的思想就够了 我们还是先建出一棵$trie$,我 阅读全文