首页 > TAG信息列表 > Duff
CF587D Duff in Mafia
洛谷题面 除 \(\verb!riddle!\) 外的另一道前后缀优化建图题qwq。 题目大意 给你一张 \(n\) 个点 \(m\) 条边的无向图,边有颜色和边权。你要从中删去一些边,满足: 任意两条删掉的边没有公共的顶点。 任意两条剩余的、颜色相同的边没有公共的顶点。 删去的边的边权最大值最小。CF587F Duff is Mad
更好的阅读体验 题意 给定 \(n\) 个字符串 \(S_{1...n}\). 定义 \(\text{occur}(t, s)\) 为 字符串 \(t\) 在字符串 \(s\) 中的出现次数. 有 \(q\) 次询问,每次给出 \(l\),\(r\) 和 \(k\),输出 \(\sum\limits_{l\le i\le r}\text{occur}(s_i, s_k)\). \(n,k,\sum |s_i|\le 10^5\) 题CF587A Duff and Weight Lifting
洛谷题面 较为简单,但还是因为细节问题挂了几发。 题目大意 有 \(n\) 个数 \(w_1,w_2,\cdots,w_{n-1},w_n\),若有 \(k\) 个 \(w\) 值满足存在一个数 \(x\) 使得 \(2^x\) 为这 \(k\) 个 \(2^w\) 的和,则这一组合是合法的,我们希望找到最小的组数 \(m\),使这 \(n\) 个 \(w\) 组成 \(m\)CF587F Duff is Mad
直接做没什么思路,那就考虑根号算法 令 $\mathrm{s[k]}$ 的长度为 $\mathrm{len}$. 如果 $\mathrm{len}$ 的长度大于根号 $\mathrm{n}$, 则这样的 $\mathrm{s[k]}$ 很少. 可以直接枚举长度大于根号的串,然后和其他所有串去匹配. 具体方法就是建出所有串的 AC 自动机,然后【CF587F】Duff is Mad
题目 题目链接:https://codeforces.com/problemset/problem/587/F 给定 \(n\) 个字符串 \(s_{1 \dots n}\)。 \(q\) 次询问 \(s_{l \dots r}\) 在 \(s_k\) 中出现了多少次。 \(n,q,\sum_{i=1}^n |s_i| \le 10^5\)。 思路 看上去就很根号分治。取 \(M=350\),分别考虑当 \(|s_k|\leq MCF587F-Duff is Mad【AC自动机,根号分治】
正题 题目链接:https://www.luogu.com.cn/problem/CF587F 题目大意 给出\(n\)个字符串\(s\)。\(q\)次询问给出\(l,r,k\)要求输出\(s_{l..r}\)在\(s_k\)中出现了多少次。 \(1\leq n,q,\sum |s_i|\leq 10^5\) 解题思路 考虑一个比较暴力的做法,先把所有的构出一棵\(AC\)自动机,一个CF587F Duff is Mad
题面传送门 差点看成另外一道题。 因为这个是统计\([l,r]\)区间内的个数所以拆成\([1,r]-[1,l-1]\) 然后很不好做,考虑根号分治。 如果这个询问串长度小于\(\sqrt n\)那么就暴力插入找答案即可,这个用分块维护答案可以做到\(O(m\sqrt n)\) 对于大于\(\sqrt n\)的,就直接对于每个这种[cf587D]Duff in Mafia
二分最大边权,即有些边强制不能被选 接下来,即任意一点上某两边不能同时被选,以及任意一点上颜色相同的两边必须被选择一条 这些限制都可以用2-sat的形式来描述(强制不能选即连边"选->不选"),但后两类的边数达到了$o(m^{2})$,时间复杂度上无法接受 当一个节点上有一种颜色的边出现3次,或有达夫设备(Duff‘s Device)
众所周知,过多的循环会带来一定的性能开销,增加总体运行时间。而减少迭代次数能够优化性能。”Duff’s Device” 作为广为人知的一种限制循环迭代次数的模式,还是有必要了解的。 下面贴出了几个js版本的Duff's Device实现方式 function duff(items) { var len = items.length,【CF587D】Duff in Mafia(2-SAT)
点此看题面 给定一张\(n\)个点\(m\)条边的有向图,每条边有一种颜色和一个边权。 要求选出一些边,使得这些边是一个匹配,且剩下每种颜色的边也各是一个匹配。 求选出边最大权值的最小值,并给出一组方案。 \(n,m\le5\times10^4\) \(2-SAT\) 我们发现,对于一条边有两种情况: 如果选了它,[cf587F]Duff is Mad
先建出AC自动机,即求其fail树上,$s_{l},s_{l+1},...,s_{r}$这些串的位置的子树中有多少个$k$的前缀 对$[l,r]$区间分块(设块大小为$k$),询问分为块内和块外两部分: 对于块内,直接统计每一个块对每一个$s_{k}$的答案,枚举每一个块,问题可以看作对于每一个$k$的前缀求其到根路径上有多少个串,dCF587F. Duff is Mad
题目描述 题解 知道是分块之后就不难了 把n分块,对于整块建AC自动机暴力跑,散块把全部串建AC自动机之后可以线段树查子树(因为往上查要考虑那些能查那些不能所以不好搞),也可以递归子树时用 出-入 计算 空间卡一卡可以\(n\sqrt n\),如果再把询问[L,R]前缀和一下之后也许可以做到线性 时Codeforces Round #326 (Div. 1) B - Duff in Beach
首先我们可以发现,长度为l的数组就是a数组不断循环构成。 令dp[i][j]表示操作到第j块,结尾是第i个数字时的结果。 \(dp[i][j]=\sum_{k=0}^{n-1}dp[k][j-1]\)但是这样复杂度过高。 于是,我们考虑前\(n\cdot k\)个数字。 在第j块中的第i个数字,其实转移,只有他前面的所有比他小的数字,我们【XSY2414】【CF587C】Duff in the Army(倍增lca)
看到题目中\(a<=0\),自然就想到用暴力维护这个东东。 设倍增数组\(fa[u][i]\)和\(minn[u][i]\),其中\(minn\)存的是一个结构体,结构体中包含两个东东:一个数组和这个数组中的元素个数。 \(fa[u][i]\)表示啥我就不说了,\(minn[u][i]\)表示从\(u\)到\(fa[u][i]\)(即\(u\)的\(i\)倍祖先)中前