摘要:
题目 首先这道题与 诗人小G 有很大的相同点。其实就是超级弱化版(弱化数据,弱化 $p=2$)。 考虑使用斜率优化,式子 $f_i=f_j+(s_i+s_j+j-i-1-L)^2$,对其进行变形 $a_i=sum_i+i,b_i=sum_i+L+1+i$,则 $dp_i=dp_j+(a_i-b_j) 阅读全文
摘要:
数的乘积 考虑用除法解决这个问题。因为如果这些数的乘积超过了 $10^{18}$,那么用 $10^{18}$ 依次除以这些数肯定存在一个时刻变为 $0$。所以就可以在不使用 __int128 这类黑科技的情况下方便的判断。注意如果有一个数是 $0$ 应该立刻停下输出 $0$,不然可能出现 Float 阅读全文
摘要:
Float Point Exception 出现 $\div$ 或 $\mod 0$。 阅读全文
摘要:
诗人小G 考虑普通的 DP。令 $f_i$ 表示划分前 $i$ 个句子的最小不协调度。可以用前缀和处理,易得方程 $f_i=f_j+| s_i-s_j+i-j-1-l|^p$,注意这里空格是需要考虑长度的,也就是 $j+1\sim i$ 成立了一段,那么应该是 $i-(j+1)+1-1=i-j-1$ 阅读全文
摘要:
核心其实是决策单调性。 四边形不等式 基本概述 四边形不等式本质是在决策时利用单调性进行的一种优化,通常与动态规划结合 例题 石子合并 我们先看一道非常经典的问题: 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次 阅读全文
摘要:
2021 年就学了KMP,2023写一篇详细点的总结。 首先我们需要理解朴素做法。 枚举开始匹配的位置 $i$,和匹配串中的每个位置逐一匹配,失败就停止移动继续匹配,最坏情况复杂度高达 $O(mn)$ 上述做法的缺陷就在于没有充分利用信息,比如匹配失败时就从头开始。我们考虑一次匹配中,如果失败了,那 阅读全文
摘要:
题意 有一个长度为 $n$ 的整数序列 $a_i$ 。你有 $m$ 个操作,包括修改和询问。 对于每个询问,给出一个值 $c$ (整数),询问序列中大于等于 $c$ 的数字有多少个连续段。 对于每个修改,将位置 $x$ 的数字 $a_x$ 修改为 $y$ 思路 考虑性质分析。如果存在两个位置使得后面 阅读全文
摘要:
链接 题意 给定一个数列,求将其删除任意一段(可以不删)后这个数列的最长上升子串。 思路 首先考虑到答案必定是一段上升子串或两段之和。而一段可以直接求出,两段还需满足其中左段的右端 $<$ 右段的左端。可以按照数值排序,然后找时间在它之前的最大的答案。 #include<bits/stdc++.h> 阅读全文
摘要:
最小表示法 思路 考虑将原串复制一遍,就可以得到所有循环同构串,然后先枚举两个位置 $i,j$,分别对应第一个和第二个位置。然后往后枚举,遇到第一个不同的位置,那么另外一个大的数对应的指针位置之前的每个循环同构串都不如第一个来的优,所以可以直接跳到这个位置的下一个位置。即假设 $s_i>s_j$,则 阅读全文
摘要:
老大 先以图为例 这题二分,当二分出来一个 $dis$ 后,考虑怎么选取最优。首先找到最深的点上面 $dis$ 个位置(这样可以满足到那个点子树内的距离满足的基础上到外面的距离最小),比如 $dis=1$,那么应选择 $6$ 的 $1$ 级祖先 $3$,然后再以这个点为根搜(以 $3$ 为根最深的是 阅读全文