摘要:
P9089 「SvR-2」Work 可以找到一些性质: 如果串 \(c(字符)+A\) 合法则串 \(A\) 合法,反之如果串 \(A\) 不合法则串 \(c(字符)+A\) 不合法 如果串 \(A,B\) 合法(\(len(A)<len(B)\))且 \(c+A\) 合法,则 \(c+B\) 合法 阅读全文
摘要:
题目链接 Information Graph 分析 在线并不好做,考虑离线,先将树建出来 \(2\) 操作时 \(x\) 节点 与 当前根节点 之间的点都会获得文件 当前根节点可以用并查集维护 对于查询的节点判断它是否为链上的点即可 具体的,若该节点为 \(rt\) 子树中的点 且 该节点的子树包含 阅读全文
摘要:
题目链接 星空 分析 题目中的区间反转,相当于区间异或 \(1\) 对于区间操作,我们可以想到差分 对本题来说,我们可以做一次异或差分 也就是 \(c[i]=a[i]\) 异或 \(a[i-1]\) 这样以后,对于 \([i,i+w]\) 的操作可以转化为对差分数组 \(c[i]\) 与 \(c[i 阅读全文
摘要:
题目链接 luogu atcoder 分析 令 \(k=\left \lfloor \frac{n}{2} \right \rfloor\) 对于第三个条件,只需要满足 \(\sum_{i=1}^{k+1}a[i]<\sum_{i=n-k+1}^{n}a[i]\) 即可 有一个 \(trick\): 阅读全文
摘要:
题目链接 [Violet] 蒲公英 分析 可以先将 \(a[i]\) 离散化 然后考虑分块 对于询问 \(x,y\), \(x\) 属于 \(p\), \(y\) 属于 \(q\) 当 \(q-p<=1\) 时 直接暴力枚举即可,时间复杂度为 \(O(\sqrt{n})\) \(else\) 如图 阅读全文
摘要:
题目链接 Game Bundles 分析 很神奇的一道题目 先想想如何计算一个集合和为60的子集个数 可以想到通过 \(DP\) 求解: 记 \(f[i][j]\) 为前 \(i\) 个数字,和为 \(j\) 的子集个数 则 \(f[i][j]+=f[i-1][j-a[i]]\) \(f[i][a[ 阅读全文
摘要:
题目链接 Power Tree 分析 将叶子节点按dfs序重标号后,每次控制操作可以转化为将子树内叶子节点所在区间加(或减)一个数 不难可以想到将叶子区间进行差分 每次对 \(l\) 到 \(r\) 的操作可以转化为将 \(l\) 上的数转移到 \(r+1\) 上 每次操作后差分数组的和不变 将所有 阅读全文
摘要:
题目链接 Rroken robot 分析 记 \(f[i][j]\) 为从 \(i\) 行 \(j\) 列到最后一行的期望,则 \( f[i][j]= \begin{cases} \frac{1}{3}(f[i][j]+f[i][j+1]+f[i+1][j])+1 &i=1\\ \frac{1}{4 阅读全文
摘要:
贪玩蓝月 一个朴素的想法就是模拟这个过程,当询问时做一遍01背包,但这样明显会超时 想象这样一个例子:当两次询问中间夹着一次插入操作 第二次进行01背包,明显只需要在第一次的基础上对新插入的数做一次01背包 由于 \(p\) 很小,所以这样时间复杂度大大减小 所以我们可以对前端插入与后端插入分别维护 阅读全文
摘要:
A 最后一次插入的数的值与位置一定相同 考虑倒着做 每次从左往右扫一遍 当遇到 a[i]==i 时将此数删除并跳出 B 当 n 为 5 时 构造出的图如下 (图形编辑器 (csacademy.com)) 那么我们猜想当 n 为奇数时将 n 与其他点连边 i 与除了 n-i 的其他点连边 证明: n 阅读全文