摘要:
题目分析: 欧几里得算法来处理一类分数问题,分数问题的形式如下 $\frac{a}{b} < \frac{p}{q} < \frac{c}{d}$ 当a=0时,答案等于$\frac{1}{\lfloor \frac{d}{c} \rfloor + 1}$当a>=b时,可以考虑前后同减去一个数化为真分 阅读全文
摘要:
题目分析: 画一下fail树,就会发现就是x的子树中属于y路径的,把y剖分一下,用线段树处理 $O(n*log^2 n)$。 代码: 阅读全文
摘要:
题目分析: 搜索2^k种情况,线段树分别处理就行了,正确性明显。 代码: 阅读全文
摘要:
题目分析: 用"$"连接后缀数组,然后做一个主席树求区间内不同的数的个数。二分一个前缀长度再在主席树上求不同的数的个数。 代码: 阅读全文
摘要:
题目分析: 求出height以后很明显跨越最小height的一定贡献是最小height,所以对于区间找出最小height再将区间对半分。 代码: 阅读全文
摘要:
题目分析: 裸的数位DP,注意细节。 阅读全文
摘要:
题目分析: 首先要想两个暴力,一个的时间复杂度是$O(n^2)$,另一个是$O([\frac{n}{k}])$的。 $n^2$的暴力可以枚举两段,一段有$i$个取两个的小朋友,一段有$j$个取两个的小朋友。 你就可以算出每轮选取他们的代价,假设为$alpha$和$beta$。你要做的只是解$ (x+ 阅读全文
摘要:
题目分析: 这种题目显然可以先考虑哪些无解。我们发现我们不考虑操作次数的时候,我们可以选择连续的三个进行异或操作。 这样我们总能使得一个序列转化为$000...000xy$的形式。换句话说,对于$000...0001$,$000...0010$,$000...0011$考虑无解条件即可。 这时候写一 阅读全文
摘要:
题目分析: 如果一个双连通分量是简单环,那么用polya原理计数循环移位即可。 如果一个双连通分量不是简单环,那么它必然可以两两互换,不信你可以证明一下相邻的可以互换。 如果一条边是桥,那么直接乘以k就行了。 代码: 阅读全文
摘要:
题目分析: 首先为了简便起见我们把前$15$的答案找出来,免得我们还要特判$200$以内之类的麻烦事。 然后我们从$16$开始递推。考虑猜测第i位是$0$还是$1$(这本质上是个二分)。一开始先猜是$1$,然后求是$0$的有多少个,与当前的$k$判断确认$0$和$1$。 然后考虑到某种情况就不输出的 阅读全文