摘要:
首先暴力是考虑对每个询问枚举问号填 1 还是 0,然后把每种可能统计到答案中,复杂度是 \(O(2^n \times q)\) 的。 然后我们可以观察出一些性质: 比如 1?1,他可能的情况是 111 或者 101,他们在数值上是不连续的,如果能把他们转化成连续的就好做了。 这里就有一个非常巧妙地转 阅读全文
摘要:
题意 给定 \(n−1\) 种不同的寿司,第 \(i\) 种寿司的美味度为 \(i+1\),小 G 和小 W 从中挑选一些来品尝,要求他们选得寿司中美味度必须都互质,问有多少种方案满足小 G 和小 W 的要求。 答案对 \(p\) 取模。 \(2\leq n \leq 500\),\(0 \le p 阅读全文
摘要:
个人觉得挺妙的一个结论题。 首先不难发现每个数对答案的贡献是 \(a_i\) 或者 \(-a_i\)。 那么系数的序列应该有两个性质:必须存在两个相同的系数相邻。设有 \(p\) 个减号,\(q\) 个加号,满足 $2p+q \equiv 1 \pmod{3}$。 证明后面再写。 那么知道这个性质, 阅读全文
摘要:
首先我们发现一个双倍回文串当且仅当本身是一个回文串且左右两边都是回文串。 那么对于右边的回文串,到中心 \(i\) 时,Manacher 所记录的 maxr 一定大于 \(i\),如果满足这个条件,那就判断 \(i\) 和 \(i\) 关于 mid 的对称串是否有交点,有交点就说明这是双倍回文串。 阅读全文
摘要:
背包 \(\texttt{dp}\) 把城堡看成为物品,派出的兵力为代价,获胜的场数乘上第几个城堡为价值。 记 \(dp[i]\) 表示已经派出 \(i\) 的兵力的最大价值。 那么我们考虑将每个人派出的兵力排序,枚举城堡 \(i\),由于已经排好序,能打败第 \(k\) 个敌人就能打败第 \(k- 阅读全文
摘要:
博主本人高二,FJ 退役 OIer。 平常博客里会放一些题解,有些校内训练/517coding/ZR 的题解会有密码保护。 阅读全文
摘要:
T1 题解:有 $n$ 个带权值 $a_i$ 的宝石,$m$ 次询问,问区间 $[l,r]$ 中权值相同的宝石的最近距离。 题解:先离散化,那么我们可以预处理出 $lst[i]$ 表示当前这个宝石和他相同的上一个宝石的位置在哪,然后对于询问,我们考虑离线处理,对于每个询问按照右端点排序,然后在线段树 阅读全文
摘要:
记 $dp[i]$ 表示做到第 $i$ 个时满足条件的最大权值。 那么我们发现转移并不好想,那么我们考虑多记录一下没有限制的最大权值 $lim[i]$。 那么处理出 $lim[i]$,然后转移时判断区间长度是否为 $k$ 进行转移就好了。 #include <bits/stdc++.h> #defi 阅读全文
摘要:
在大佬的 blog 上看到的树上距离问题转化为括号序列求解的技巧。 就是在 dfs 的时候,某个节点入栈时加入左括号,出栈时加入右括号。 那么对于树上两点的距离,就是他们中间未匹配的括号数量。因为匹配的括号必定不存在于他们之间的路径上,其他的都存在于他们的路径上。 然后这道题我们维护树上两个黑点之间 阅读全文
摘要:
一道挺好的题,刚刚开始的时候没什么思路,后来认真考虑了一些性质就会做了。 题意是给出一个 01 串 \(s\),\(|s| \leq 2 \times 10^5\),每次可将任意子串 $011$ 变成 $110$ 或者将 $110$ 变成 $011$。有 \(q\) 次询问,每次询问两个等长的子串, 阅读全文