把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 45 下一页
摘要: 题面传送门 很妙的一道题。 根号算法在这上面只有$48$分别想了。 因为随机化算法没有前途所以考虑随机。 容易发现如果我们知道了一个子树的节点,又知道它下一层点的子树,那么我们可以有一个树不询问而直接算出来。 这个子树随机即可,因为树剖的性质所以这个可以保证$O(nlogn)$ code: #inc 阅读全文
posted @ 2021-05-19 18:11 275307894a 阅读(82) 评论(0) 推荐(0)
摘要: A 题意简述:有一个$n*m$的点阵,每两个点之间能连边当且仅当他们距离为$3$或$sqrt 5$,定义一种边的选取方案是合法的要求边集内任意两条边不能共用一个端点。求边集的最大大小并输出一种方案。\(n\times m\leq 2\times 10^5\) 并不会什么很靠谱的解法。 把每条边建出来 阅读全文
posted @ 2021-05-18 20:12 275307894a 阅读(189) 评论(0) 推荐(0)
摘要: 题面传送门 发现以前自己写的像那个一样。 首先两次dfs找重心是显然的。这个可以保证分治复杂度。 然后就可以开个桶直接算即可。 时间复杂度$O(nmlogn)$ code: #include<cstdio> #include<cstring> #include<vector> #include<qu 阅读全文
posted @ 2021-05-16 12:17 275307894a 阅读(37) 评论(0) 推荐(0)
摘要: 题面传送门 真是我学习高斯消元以来的做过最正经的一道题目。 编号这个东西不太好做,但是我们如果把每条边经过的次数算出来然后排序后赋权就可以达到最小。 所以是算每条边出现的期望次数。 然后因为$m$太大实在不好弄,但是因为是随机跑的所以只要找到两端点出现次数然后除以度数加起来即可。 显然可以建立方程, 阅读全文
posted @ 2021-05-15 19:30 275307894a 阅读(39) 评论(0) 推荐(0)
摘要: 题面传送门 一眼看数据范围感觉像一只log 然后因为是位运算所以考虑分开拆位考虑。 分开后就是求矩阵内全$0$与全$1$的个数。 然后这个东西其实是单调栈经典问题,就是在单调栈预处理离当前向上距离最近的那个然后直接转移,中间那一段随便转移即可。 时间复杂度$O(n^2logw)$ code: #in 阅读全文
posted @ 2021-05-14 22:42 275307894a 阅读(56) 评论(0) 推荐(0)
摘要: 题面传送门 蛮好地题目。 刚开始没有想到取对数然后二分答案对于每个权值除$mid$看答案乘积是否大于$1$ 然后就被卡常了,搞了一下循环展开才勉强不开O2卡过去。 具体思路就是对模式串建出AC自动机然后在AC自动机上设$f_{i,j}$为匹配到了$i$点然后在AC自动机上第$j$个节点。 这个东西滚 阅读全文
posted @ 2021-05-14 22:05 275307894a 阅读(37) 评论(0) 推荐(0)
摘要: 题面传送门 显然有$O(nmw)$的dp但是不能过。 我们发现对于$[w/2+1,w-1]\(这一段区间内的数\)\times 2$都是一样的。这启示我们压起来。 根据整除分块原理只有$O(\sqrt w)$个不同的数。 所以就可以优化到$O(nm\sqrt w)$了。 code: #include 阅读全文
posted @ 2021-05-13 21:08 275307894a 阅读(69) 评论(0) 推荐(0)
摘要: 题面传送门 陈指导一个小时写完的东西我写了四个小时。 也算是对AC自动机和最大独立集有了更深刻的了解。 首先子串关系想到AC自动机可以做。 具体的只要把每个前缀的结尾往上跳跳到第一个其它串的结尾即可。 然后floyd传递闭包一下即可。 但是问题是如果真的暴力跳是$O(n\times \sum\lim 阅读全文
posted @ 2021-05-08 22:43 275307894a 阅读(55) 评论(0) 推荐(0)
摘要: 题面传送门 差点看成另外一道题。 因为这个是统计$[l,r]\(区间内的个数所以拆成\)[1,r]-[1,l-1]$ 然后很不好做,考虑根号分治。 如果这个询问串长度小于$\sqrt n$那么就暴力插入找答案即可,这个用分块维护答案可以做到$O(m\sqrt n)$ 对于大于$\sqrt n$的,就 阅读全文
posted @ 2021-05-06 19:42 275307894a 阅读(56) 评论(0) 推荐(0)
摘要: 题面传送门 很平凡的分块啊不知道为什么要评黑题。 首先显然要预处理块间众数。 然后就是考虑零散块怎么处理。 用一个vector将所有一样的数存下来,然后零散块左边从右到做遍历,如果碰到一个数后ans个数没有超过右边界就直接将ans++ 右边同理。 时间复杂度$O(n\sqrt n)\(,因为vect 阅读全文
posted @ 2021-05-04 20:37 275307894a 阅读(56) 评论(0) 推荐(0)
摘要: 题面传送门 看到题面的瞬间想到超级钢琴。 然后写了个类似超级钢琴的东西发现会有重复然后就不知道怎么办了。 被题解点播了一下。 就是先跑出最优解,然后看最优解前$k$个不动拿来拓展,这样每个分支不交就可以堆维护了。 时间复杂度$O(Ck^2(n+k)+ClogClogk)$ code: #includ 阅读全文
posted @ 2021-05-03 22:52 275307894a 阅读(78) 评论(0) 推荐(0)
摘要: 题面传送门 有撤销还可以离线。 就显然可以找到每个操作的左右端点。 然后写了线段树分治 这个东西之所以不能线段树分治的原因是因为他是要求顺序的。 所以直接写个高维数据结构即可。 因为不想写kdt所以写了个四分树反正数据随机 code: #include<cstdio> #include<vector 阅读全文
posted @ 2021-05-03 15:39 275307894a 阅读(70) 评论(0) 推荐(0)
摘要: 题面传送门 域值这么大显然不能把域值放到dp里去。 但是$n$很小可以开两维。 所以可以设$f_{i,j}$为$i$子树内有$j$个点被选择的最小费用。 但是这样状态表示很不明确。 所以再增添一维$0/1/2$代表没选,选了而没有成为贡献,选了成为贡献。 然后平凡转移一下即可。注意树形dp常见的$O 阅读全文
posted @ 2021-05-03 14:59 275307894a 阅读(120) 评论(0) 推荐(0)
摘要: 题面传送门 希望早日有好的spj。 看到这道题应该可以直接秒了$O(n3)$:枚举第一个串中的两个端点,然后枚举第二个串的重构循环开始的地方,两边跑lcp/lcs看能否成立。 然后你发现lcp和lcs显然可以hash+倍增$O(n2logn)$跑出来,关键是判断的地方。 设$f_{i,j}$为第一个 阅读全文
posted @ 2021-05-02 16:19 275307894a 阅读(50) 评论(0) 推荐(0)
摘要: 题面传送门 显然转化一下算贡献就是$\sum\limits_{\sum\limits_{\max(a_i,a_j)\times i\times (n-j+1)}}$ 根据拆max的套路拆成枚举大的然后正反跑两边。 那么树状数组维护一下即可。 code: #include<cstdio> #inclu 阅读全文
posted @ 2021-05-01 14:35 275307894a 阅读(34) 评论(0) 推荐(0)
摘要: 题面传送门 为什么所有题解要用$g$帮助转移啊,我觉得不用吧…… 随便画画图就可以发现这个一定是从起点向左走一段然后再向右不回头走再向左走一段。 然后前后两端都可以用字符串哈希搞掉。 然后中间dp即可。 具体转移因为不会回来走所以枚举前一行转移即可。 时间复杂度$O(nm)$ code: #incl 阅读全文
posted @ 2021-04-25 19:10 275307894a 阅读(49) 评论(0) 推荐(0)
摘要: 题面传送门 显然有一个$O(n2klogn)$的dp状态就是设$f_{i,j}$为分了$i$次,到了$j$的最小无序度,用树状数组维护一下即可。 然后把这个东西转到二维平面上看就显然有决策单调性。 但是这个转移不能直接计算所以没有办法直接决策单调性。 因为当前层不用这一层而直接用下一层,所以可以用分 阅读全文
posted @ 2021-04-24 15:27 275307894a 阅读(88) 评论(0) 推荐(0)
摘要: 题面传送门 显然有一眼$O(n^2k)$的dp:设$dp_{i,j}$为分了$i$段,分到第$j$个时的最小值。 那么可以$O(n)$暴力转移。 因为每种颜色相互独立,所以我们对每种颜色分别考虑。 如果$[i,j]$中有$x$个,$[i',j']$中有$y$个,$[i,j']$中有$z$个,那么$[ 阅读全文
posted @ 2021-04-24 08:32 275307894a 阅读(54) 评论(0) 推荐(0)
摘要: 题面传送门 其实这道题可以写得很短的。而且跑得飞快,目前没有手动编译优化第一。感觉完全没有黑题。 如果我们设$dp_{i,j}$为到了第$i$个基站,当前到了第$j$个点时候的最小价值。 那么显然我们有$dp_{i,j}=\min\limits_{dp_{i-1,k}+w(k+1,j)}$,$w(i 阅读全文
posted @ 2021-04-20 21:01 275307894a 阅读(69) 评论(0) 推荐(0)
摘要: 题面传送门 看到数颜色就可以想到要用分块。 然后把正解想出来然后复杂度算错 然后发现我们有两种方法: 第一种,将每个颜色都建成并查集然后直接查询,这个是$O(nq)$的。 第二种,将每种颜色内的暴力匹配扔到map里,然后对于每个询问查询。这个是$O(n^2logn+qlogn)$的。 然后想到将两个 阅读全文
posted @ 2021-04-18 13:34 275307894a 阅读(76) 评论(0) 推荐(0)
摘要: 题面传送门 这个轮换的东西线段树显然不好搞。 万能的分块其实是更好的选择。 这种统计个数的肯定是每个块开桶记录有几个。 那修改操作就是把每个块尾巴那个元素拿出来接到后一个块开头。然后把最后一个元素删掉放到第一个元素的位置。 不难发现这个用deque就可以很好地解决。修改是顺便维护一下桶即可。 这个问 阅读全文
posted @ 2021-04-17 21:02 275307894a 阅读(141) 评论(0) 推荐(0)
摘要: 题面传送门 首先这个是2000年的IOI所以没有什么wqs二分。 设$dp_{i,j}$为到了$i$,已经有了$j$个邮局的最小距离和。 显然有方程式$dp_{i,j}=\min_{dp_{k,j-1}+w(k+1,i)}$,其中$w(i,j)\(为在\)[i,j]$区间内村庄建立一个邮局的最小距离 阅读全文
posted @ 2021-04-17 20:52 275307894a 阅读(44) 评论(0) 推荐(0)
摘要: 题面传送门 一看到效率就感觉像是分数规划。 然后这个东西又可以二分。 所以应该是二分寻找答案。 那么怎么看$mid$是否可以呢? 看到$n$很小想到可以$O(n3)$ 首先floyd预处理出两点之间距离。 然后再$O(n2k)$暴力枚举得到两点之间最优的值。 那么二分一个答案之后把每条边边权设为$w 阅读全文
posted @ 2021-04-17 14:34 275307894a 阅读(33) 评论(0) 推荐(0)
摘要: 题面传送门 不是很理解陈指导为什么没切掉这道题。 把这个东西分成两端处理,即$[x,lca]\(与\)[lca,y]$,因为收集器中宝石种类不一样所以这个$lca$被算重了是没有关系的。 前面一个我们可以预处理出对于每一个节点它最近的后一个在什么地方,然后对于每个点找到最近的第一个然后在树上倍增即可 阅读全文
posted @ 2021-04-17 11:10 275307894a 阅读(99) 评论(0) 推荐(0)
摘要: 题面传送门 看到数据范围想到可以状压。 然后以为是$b$的分配方式看着题目想了好久始终没有想到怎么把$O(m)$的枚举转移去掉。 设$f_{i,j,k}$表示当前到了第$i$个队伍,集合为$j$,$b$总量为$k$ 发现这样子其实还是要枚举转移。 考虑怎么有最优分配方案,显然每个都给最少是最优的。设 阅读全文
posted @ 2021-04-17 09:36 275307894a 阅读(107) 评论(0) 推荐(0)
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 45 下一页
浏览器标题切换
浏览器标题切换end