05 2017 档案
摘要:数位$dp$。 $dp[i][j][k][s]$表示最高位有$i$位,并且最高位为数字$j$,这些数字的最小公倍数为$k$,被$2520$取余的结果为$s$的方案数。 被每一个数字都要整除,就是被这些数字的最小公倍数整除。$1$到$9$的随便选数字的最小公倍数只有$48$种。 $A\%B = A\%
阅读全文
摘要:分块,暴力。 将序列分成$sqrt(n)$块,每块$sqrt(n)$个元素,每块内排序。 每次操作要计算这个区间中比$a[p1]$大的有几个,小的有几个,比$a[p2]$大的有几个,小的有几个,端点的块内暴力找,中间的块内二分找。 交换完数字之后,可以直接重新$sort$排个序。 总体时间复杂度$O
阅读全文
摘要:枚举,容斥原理,范德蒙恒等式。 先预处理每个位置之前有多少个左括号,记为$L[i]$。 每个位置之后有多少个右括号,记为$R[i]$。 然后枚举子序列中第一个右括号的位置,计算这个括号的第一个右括号的方案数。 即在它左边取$k$个左括号,在右边取$k-1$个右括号都是合法的方案,这个东西可以用范德蒙
阅读全文
摘要:二分。 如果$n≤m$,显然只能$n$天。 如果$n>m$,至少可以$m$天,剩余还可以支撑多少天,可以二分计算得到,也可以推公式。二分计算的话可能爆$long$ $long$,上了个$Java$。
阅读全文
摘要:简单判断。 找第一类区间中$R$最大的,以及第二类区间中$L$最小的,判断距离。 找第二类区间中$R$最大的,以及第一类区间中$L$最小的,判断距离。 两种情况取个最大值即可。
阅读全文
摘要:简单判断。 分别判断每个单词是几面体,加起来就是答案。
阅读全文
摘要:区间$dp$。 倒着考虑这件事件,肯定有最后一个取走的数字,假设是$a[k]$,那么最后一次取走的价值肯定是$a[0]*a[k]*a[n+1]$,之前取走的价值和为$[1,k-1]$的价值加上$[k+1,n]$的价值。 设$dp[L][R]$表示取完区间$[L,R]$的最大价值,$dp[L][R]
阅读全文
摘要:$01$背包。 数据范围:物品个数小于等于$3000$,背包大小小于等于$1000000$。 $map<int,long long>dp$,用$map$去做$dp$,可以少遍历很多状态,可以$AC$。 还可以做一些优化,例如费用大,但是价值小的状态可以直接删除。
阅读全文
摘要:模拟。 先判断三边形和四边形的个数。 然后判断$5$个三角形是否都是等腰直角三角形。 然后判断$5$个等腰直角三角形比例是否符合要求。 然后寻找正方形。判断比例是否符合要求。 最后判断四边形是否符合要求。
阅读全文
摘要:模拟。 有$a$先标$a$,其次是$o$和$e$,$o$和$e$在韵母中不会同时存在。最后是$u$和$i$,这两个字母在韵母中可能同时存在,标在后面的那个。输出那些字符的话直接输出就可以了。 举几个例子: 3 shui2 Case 1: shuí liu2 Case 2: liú lve4 Case
阅读全文
摘要:最大公约数。 计算$x$与$i$的最小公倍数,就是这些人至少需要喝几杯,最小公倍数除以$x$就是要买几瓶。
阅读全文
摘要:线段树,暴力。 先处理出每个点直接能感染到的最左边的和最右边的。 之后每次扩展,看向左能到达的那些点中,最左以及最右能到哪些点,更新。 看向右能到达的那些点中,最左以及最右能到哪些点,更新。 最左最右能到哪些点,可以用线段树计算区间最小值最大值。 如果某次无法更新,那么结束。
阅读全文
摘要:字典树,$dp$。 记录$dp[i]$为以$i$为结尾获得的最大价值。枚举结尾一段是哪个单词,更新最大值。可以将字典中单词倒着建一棵字典树。 这题数据有点不严谨。 下面这组数据答案应该是负的。 3 a 0.1 aa 0.1 aaa 0.1 1 aaa 下面这组数据没通过的代码在$OJ$上也可以$AC
阅读全文
摘要:二分,最小生成树。 二分一下$k$,然后每次算最小生成树验证即可,事实证明,$cmp$函数,参数用引用还是能提高效率的,不引用一直$TLE$,时限有点卡常。 然后错误的代码好像$AC$了啊,$L$和$R$直接赋值成$mid$,有几个点一直$WA$,加一减一反而能过。
阅读全文
摘要:差分约束系统,$spfa$。 首先判断无解,若某个约束的$t$大于区间长度,则一定无解。 否则一定有解,可以得到一系列的不等式: 最终区间和大于等于目前的区间和:$S[R]-S[L-1]≥val$, 每一个位置的值小于等于$1$:$S[R]-S[R-1]≤1$, 每一个约束条件:$S[R]-S[L-
阅读全文
摘要:网络上常用名:zufe_zzt、14rj134、FightingHeart 浙江财经大学软件工程专业学生,2014 年入学,2018 年 6 月毕业(即将毕业)。 初中至高中期间:魔术爱好者(尤其是扑克牌魔术) 大学期间:ACM 算法竞赛爱好者 2017 年 6 月初 -- 2017 年 9 月初:
阅读全文
摘要:直觉,构造。 画了几个样例,发现可以随便构造......先构造根节点的完全图,每个点置为不同的颜色,然后构造儿子节点的完全图......
阅读全文
摘要:规律。 手动模拟几组数据,可以发现规律,总的来说就是把$b$和$a$分离,$b$在前面,$a$在后面,且每次将一个$a$往后调整$1$个位置,$b$会多一个,那么从后往前算一遍就可以得到答案了。
阅读全文
摘要:直觉。 先走$1$走到$n$,然后从$n$走到$2$,然后从$2$走到$n-1$,然后从$n-1$走到$3$。一次花费为$0$,一次花费为$1$。
阅读全文
摘要:构造。 $bbaabbaabbaa......$输出前$n$个即可,这样不需要用到$c$,而且任意相邻三个都不会是回文。
阅读全文
摘要:直觉。 一段区间中,肯定是$2$的倍数最多,因为区间长度除以$2$得到的数字最大。但只有$1$个数字的时候需要特判。
阅读全文
摘要:$dp$。 记$dp[i]$表示$gcd$为$i$的倍数的子序列的方案数。然后倒着推一遍减去倍数的方案数就可以得到想要的答案了。
阅读全文
摘要:$dp$。 $dp[type][i][j]$表示,前i个字符前缀和为$j$,第$i$个字符放的是$type$类型的能否实现,然后倒推回来就可以了。
阅读全文
摘要:二分。 首先把字符串处理成一个数组,二分答案,判断一下即可。
阅读全文
摘要:枚举。 枚举$gcd$,然后计算剩下的那个数能不能分成$k$个递增的数。
阅读全文
摘要:$dp$。 计算每个点离左边最近和右边最近,取个最小值。
阅读全文
摘要:枚举。 枚举对角线上放多少个$1$,剩余的贪心放,更新答案。
阅读全文
摘要:$dp$预处理,暴力。 如果$k > sqrt(n)$,那么答案不会超过$sqrt(n)$,暴力模拟即可。如果$k <= sqrt(n)$,那么可以$dp$预处理打表。
阅读全文
摘要:$dfs$,线段树。 通过观察可以发现,某位置要能被找到,和他到根这条路上的每个节点的权值存在密切的联系,且是父节点的左儿子还是右儿子也有联系。 可以从根开始$dfs$,边走边更新线段树,如果遍历左儿子,那么将$[1,val-1]$全部加$1$,否则将$[val+1,n]$全部加$1$,回溯的时候减
阅读全文
摘要:栈。 先处理一下后缀最小值。 对于每一个字符,如果不是后缀最小值,将栈顶小于当前后缀最小值的都弹出,然后压入当前字符。 如果是后缀最小值,将栈顶小于当前后缀最小值的都弹出,再输出该字符。
阅读全文
摘要:排序。 正的偶数肯定都是可以加进去的,因为加偶数不改变奇偶性。奇数从大到小排序,取个最大的前缀和。
阅读全文
摘要:质因数分解。 分解一下质因数,如果个数小于$k$个,则无解,否则把多出来的合成一个数。
阅读全文
摘要:计算几何,直觉。 凭直觉猜的做法,把每条线段的中点连起来,每个点到对应内部线段的距离,取个最小值。
阅读全文
摘要:二分答案,验证。 二分到一个答案,比他小的时间都需要补充到这个时间,计算所需的量,然后和能提供的量进行比较。
阅读全文
摘要:矩阵快速幂。 因为任意素数长度都要满足,所以$3$必须满足,$3$一旦满足,其余的肯定满足,也就是说只要考虑字符串末尾两位即可,$dp$一下就可以算方案数了。$n$较大,可以矩阵加速。
阅读全文
摘要:树状数组,倍增,枚举,$dfs$序。 对于每一次的询问,可以枚举$B$集合中的所有点,对于每一个点,在树上二分$LCA$,找到最低的更新答案。 判断是否是$LCA$可以搞个$dfs$序,将$A$集合中所有点标$1$,然后查询子树对应的区间上的区间和。
阅读全文
摘要:最短路。 先建一个只包含最短路的有向无环图,每一个点选择任意一条入边即可生成一个树形图,那么树的种类就等于每个点的入度乘积。
阅读全文
摘要:$dp$。 $dp[i]$表示到$i$位置,且$i$位置建立了的最小花费,那么$dp[i] = min(dp[k]+cost[i+1][k-1])$,$k$是上一个建的位置。最后枚举$dp[i]$,加上最后一段的花费,取个最小值即可。
阅读全文
摘要:枚举,预处理。 预处理前缀$gcd$与后缀$gcd$,枚举删哪一个即可。
阅读全文
摘要:$dp$。 要求选择$3$个区间,使得区间和最大。$dp[i][j]$表示前$i$个数中选择了$j$段获得的最大收益。
阅读全文
摘要:记忆化搜索,$dp$。 $dp[L][R]$表示将区间$[L,R]$修改为一个回文串需要的最小代价。转移很容易写,区间$dp$或者记忆化搜索都可以。 区间$dp$: 记忆化搜索:
阅读全文
摘要:记忆化搜索,$dp$。 每一个点走到的最长距离是固定的,也就是只会算一次,那么记忆化一下即可,也可以按值从小到大排序之后进行$dp$。 记忆化搜索: $dp$:
阅读全文
摘要:$KMP$。 枚举每一个后缀,去原串中进行匹配,每次匹配到原串到$i$位置的后缀与这次枚举的后缀的前缀,更新答案。
阅读全文
摘要:暴力,结论。 本打算写一发暴力,然后直接交答案,之后发现无论$n$等于多少,每种图都存在长度为$n$的路径,中间还一直以为自己暴力写错了。
阅读全文
摘要:最近公共祖先。 如果$A$到$1$的时间小于$B$到$C$再到$1$的时间,那么一定可以拦截。 如果上述时间相等,需要在到达$1$之前,两者相遇才可以拦截。
阅读全文
摘要:队列,$map$。 每次出队进行出队操作的是时候,先把队列中需要出队的人全部出队,然后比较对头和当前出队的人是否相同。
阅读全文
摘要:结论。 算了好久不会算,最后看了样例猜出了结论。次长边全用上,再用最长边减去次长边。
阅读全文