该文被密码保护。 阅读全文
摘要:
$dp$,树状数组。 很明显这是一个$DAG$上的$dp$,由于边太多,暴力$dp$会超时,需要优化。 例如计算$dp[x][y]$,可以将区域分成四块,$dp[x][y]$取四块中的最小值,每一块用一个二维树状数组维护最小值即可。 每次扩展一层需要一个新的树状数组,因为每次初始化树状数组会超时,所 阅读全文
摘要:
$dfs$,贪心。 阅读全文
摘要:
随便判了几个条件就过了,也不知道对不对的。 正解应该是: $[1].$${s_1} + {s_2} + {s_3} + ...... + {s_n} = n(n - 1)$ $[2].$${s_1} + {s_2} + {s_3} + ...... + {s_i} ≥ i(i - 1)$ 阅读全文
摘要:
广搜。 因为路径的长度均为$1$,所以每个节点只会被更新一次。 思路:对于一个还未确定路径长度的点$i$,如果他除了与他直接相邻的点之外有别的点已经确定了最短路,那么这个点现在也可以确定最短路了。 阅读全文
摘要:
公式,矩阵快速幂,欧拉函数,乘法逆元。 $an{s_n} = \frac{1}{n}\sum\limits_{d|n} {\left[ {phi(\frac{n}{d})×\left( {fib(d - 1) + fib(d + 1)} \right)} \right]}$。 阅读全文
摘要:
离线操作,树状数组,$RMQ$。 这个题的本质和$HDU$ $3333$是一样的,$HDU$ $3333$要求计算区间内不同的数字有几个。 这题稍微变了一下,相当于原来扫描到$i$的之后是更新$a[i]$的情况,现在是更新$log$级别个数的数字(因为以$i$为结尾的区间,最多只有$log$级别种不 阅读全文
摘要:
结论。 如果颜色数量$≥$人数的平方除以$4$,那么一定可行;反之不行。 阅读全文
摘要:
线段树。 因为是取模运算,所以数字减少的速度是很快的,因此只要每次寻找一下比当前取完模之后的数小的数就可以了。用线段树寻找一下。 阅读全文
摘要:
$dfs$序,线段树。 可以统计每一个节点作为$root$的子树上对答案的贡献,可以将树转换成序列。问题就变成了一段区间上求小于等于某个值的数有几个。用线段树记录排好序之后的区间序列,询问的时候,属于询问区间的每个节点二分一下统计答案即可。 阅读全文
摘要:
$dfs$,后续遍历。 如果某个节点$a[i]=i$,那么$i$的后继的$a[i]$都要指向$i$,直到出现新的后继$j$,$a[j]=j$。利用这个可以判断是否有解。 如果有解的话,那么只要输出后序遍历的结果就可以了。 阅读全文
摘要:
$dp$,最长公共子序列变形。 $f[i][j][h][0]$表示:$s[1 \cdots i]$与$t[1 \cdots j]$,分成了$k$段,并且$s[i]$与$t[j]$之后没有切的最优解。 $f[i][j][h][1]$表示:$s[1 \cdots i]$与$t[1 \cdots j]$, 阅读全文
摘要:
树的重心,树形$dp$。 记录以$x$为$root$的子树的节点个数为$sz[x]$,重儿子为$son[x]$,重心为$ans[x]$。 首先要知道一个结论:以$x$为$root$的子树的重心$ans[x]$,一定在$ans[son[x]]$到$x$的路径上,即以$x$的重儿子为根的子树的重心到$x 阅读全文
摘要:
二分。 统计过程如下图: 先统计红线上的个数,然后统计绿线上的个数,然后统计咖啡色线上的个数......一个一个往下统计就可以了。 阅读全文
摘要:
最短路,自适应$Simpson$积分。 看了别人的题解才知道有个东西叫自适应$Simpson$积分。 有这样一个积分公式:$\int_a^b {f(x)dx} \approx \frac{{b - a}}{6}\left[ {f(a) + 4f\left( {\frac{{a + b}}{2}} \ 阅读全文
摘要:
莫队算法,$dfs$序。 题目要求计算将每一条边删除之后分成的两棵树的颜色的交集中元素个数。 例如删除$u->v$,我们只需知道以$v$为$root$的子树中有多少种不同的颜色(记为$qq$),有多少种颜色达到了最多数量(记为$pp$),那么以$v$为$root$的子树与另一棵树的颜色交集中元素个数 阅读全文
该文被密码保护。 阅读全文
摘要:
容斥原理,组合数。 找出有$cnt$个数字还有没放,那么总方案数就是$cnt!$。 总方案数里面包含了正确的和非正确的,我们需要将非正确的删去。 先删去$1$个数字$a[i]=i$的情况,发现会多删,要加回两个数字$a[i]=i$的情况,发现会多加......就是一个容斥原理的过程。 阅读全文
摘要:
$dp$,背包。 $f[i][j][s]$表示前$i$个物品,凑出$j$价格的情况下,能否凑出$s$价格,$f[i][j][s]=1$表示能,否则不能。 转移很简单:如果$f[i][j][s]=1$,那么$f[i+1][j][s]=1$,$f[i+1][j+c[i]][s]=1$,$f[i+1][j 阅读全文
摘要:
数论。 如果$x$不唯一,假设存在两个解,较大的为${x_1}$,较小的为${x_2}$。 那么, $\left\{ {\begin{array}{*{20}{c}}{{x_1}\% {c_i} = {x_2}\% {c_i}}\\{{x_1}\% k \ne {x_2}\% k}\end{arra 阅读全文