摘要:
有以下三种情况: 只有一个数,直接输出。 有正数也有复数,那就先让负数撞正数得到更小的负数,直到剩下最后一个正数撞所有的负数,答案是所有数的绝对值之和。 仅有正数或者仅有负数,就先找一对不相等的相邻的数$x$和$y$来得到另外一个符号的数,回到第二种情况,答案是绝对值之和$-\left|x\righ 阅读全文
摘要:
题目链接 原题解: 可以发现,假设我们把凸多边形看做障碍,一个点没有被染色当且仅当在它的位置上能看到凸多边形任意两条相对的边中的一条(也就是能看到至少$\dfrac{n}{2}$条边)。 对于每个询问点,我们只需要从某个点出发二分出能看到或不能看到的边的区间,就能知道它有没有被染色。 (可以使用__ 阅读全文
摘要:
题目链接 原题解: 通过计数相同的子序列对个数的方式来计算答案。 设$f(i,j)$为$S$的前$i$和$j$个字符的公共子序列对个数。 当$S_i=S_j$时,$f(i,j)=f(i,j-1)+f(i-1,j)$。 否则,$f(i,j)=f(i,j-1)+f(i-1,j)-f(i-1,j-1)$。 阅读全文
摘要:
题目链接 原题解: 可以发现,在给定的规则下,若前$i$个人参与分配,则每个人得到的金币个数是固定的。 假设在前$i-1$个海盗参与分配时,某个海盗能得到$x$个金币,则第$i$个海盗需要给他$x+1$个金币才能得到支持。 如果某个海盗在前$i-1$个海盗分配时会被扔到海里,那么他一定会支持第$i$ 阅读全文
摘要:
题目链接 原题解: 我们需要找出两个距离不超过$k-1$的位置,使他们的和尽量大。 被修改过得位置比较少,所以我们可以先求出连个位置都没有被修改过的答案,然后只关心那些涉及到至少一个被修改过的位置的方案。 我们可以对每个位置维护一个multiset,表示可以和当前位置同时选择的被修改过的位置的值的集 阅读全文
摘要:
题目链接 原题解: 由于$+$满足幂等性,我们可以设$f_{i,j}$为从$i$号点向根$2^j$个点的权值之和,并且倍增计算出$f$。在查询是,可以像ST表一样用至多四个$f$中的路径拼出询问路径。 补充: 由于对于满足幂等性的运算来说,不论怎么对$1$做运算,结果都是$1$,所以考虑所有答案输出 阅读全文
摘要:
题目链接 原题解: 考虑我们需要的信息:子树里最浅的一个能向上的点是谁?子树里最深的一个没被覆盖的深度是多少? 我们记录一下$f_{i,a,b}$表示上面两个信息为$a$和$b$的时候,最少要花费的代价。 转移的时候枚举$c,d$进行转移,看起来就很麻烦。 然后我们注意一个结论:考虑如果$a\geq 阅读全文
摘要:
题目链接 原题解: 光滑的序列一定有长度为$K$的循环节。 使用动态规划,设$F(i,j)$为使前$i$个整数的和为$j$的最小修改次数。 记$cost(i,v)$为令$A_i,A_{i+K},A_{i+2K},\cdots$等于$v$需要而修改次数。则$F(i,j)=\min\limits_v \ 阅读全文