自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 P5047 [Ynoi2019模拟赛]Yuno loves sqrt technology II(二次离线莫队 + 权值分块,卡常)

时限 300ms,非常卡常,开氧气优化反向加速,连 T 5个点。显然有莫队 + 权值树状数组的做法,复杂度为 nnlog⁡nn \sqrt n \log nnn​logn,时限再开20倍就有希望卡过去了二次离线莫队的做法:设上一次维护的区间是 [l,r][l,r][l,r],当前询问的区间是 [L,R][L,R][L,R] ,当移动右端点 r 时(此时左端点不变),贡献的改变量为 [l,...

2020-01-31 14:36:24 301

原创 bzoj 4358 permu(回滚莫队(不删除莫队) + 并查集)

显然可以莫队维护权值建线段树最大连续子段长度,复杂度是 nnlog⁡nn \sqrt n \log nnn​logn,5∗1045*10^45∗104的数据下 nnn \sqrt nnn​ 大概为 10710^7107,再加一个 log 和大常数不太容易卡过去(有巨佬卡过去了)考虑用并查集维护每个权值最左延申 L[i]L[i]L[i] 和最右延申 R[i]R[i]R[i],答案就是 max(...

2020-01-29 23:10:27 340

原创 bzoj 2120:数颜色(单点修改莫队)

普通不带修改的莫队是对询问二元组 (l,r)(l,r)(l,r) 进行分块排序以降低复杂度对于单点修改的莫队,引入一个时间坐标 t,询问变成三元组:(l,r,t)(l,r,t)(l,r,t)每一步 (l,r,t)(l,r,t)(l,r,t) 有6个方向可走用类似普通莫队的分块方法,对 l,r 以 n23n^{\frac{2}{3}}n32​的大小进行分块,可以证明复杂度为 n53n^{\...

2020-01-28 18:16:16 139

原创 洛谷 P4396 [AHOI2013]作业(莫队 + 分块 + 根号均摊)

很显然有一个莫队套树状数组的做法, 因为树状数组更新和查询的复杂度都是 log⁡n\log nlogn,复杂度是 nmlog⁡nn \sqrt m \log nnm​logn通过学习了解到分块数据结构可以做到 O(1)O(1)O(1) 查询,O(n)O(\sqrt n)O(n​) 更新 与 O(n)O(\sqrt n)O(n​) 查询,O(1)O(1)O(1) 更新的平衡。由于 查询是 1...

2020-01-27 19:44:02 212

原创 2019 CCPC Camp day2 H.叁佰爱抠的序列(二分答案 + 欧拉回路 + 构造)

答案显然具有单调性,若 midmidmid 可行,则 比 midmidmid 小的答案一定可行,考虑二分答案 midmidmid,贪心构造使得整个序列的长度尽可能的小。要使得序列长度尽可能短,所有相邻关系的出现次数尽可能少。模型转换成 m 个点的完全图,当 m 为奇数时,存在一条欧拉回路,显然按欧拉回路的顺序来构造序列最优。当 m 为偶数时,不存在欧拉回路,可以加 (m−1)(m - 1)(...

2020-01-26 15:50:41 240

原创 CCPC Camp day2 I.堡堡的宝藏(二分图最大权值匹配,费用流,KM算法)

矩阵图一定是一个二分图,问题转化成在这个二分图上有 k 条边,要满足任意一条边两端的点权和大于这条边的边权,求最小的点权和。在这个二分图上,考虑只给 X 部的点赋点权,每一个 X 部的点的点权等于连出去的边的边权的最大值, Y 部的点的点权都是 0。接下来考虑升高一部分 Y 部的点的点权,使得更多的 X 部的点的点权下降。例如:此时若 Y 升高 d,则右边的 X 都可以减少 d,最终...

2020-01-26 13:58:04 269

原创 Codeforce 547 D. Mike and Fish(欧拉回路 + 思维 + 构造)

题目大意:二维平面上有 n 个点,对这 n 个点进行黑白染色,使得每行每列都满足 黑色的点和白色的点的个数的差值 小于等于 1.按行列连边构成一张二分图,X部为 x 坐标, Y部为 y 坐标,一个点的坐标为 (x,y),则连一条从 x 到 y 的边。问题转化为对边进行染色,使得任意一个点所连的边中,黑色和白色的差值的绝对值不超过 1。每一个点具有偶数度是无向图具有欧拉回路的充分必要条件,...

2020-01-22 17:53:49 317

原创 2019 CCPC Camp day2 F.采蘑菇的克拉莉丝(树链剖分 + 思维)

容易想到比较直接暴力的方法:用线段树维护子树和,加入蘑菇时,更新从 u 到 根节点路径上的所有子树和,这个可以用树剖实现。查询时 枚举 当前起点的所有出度点,计算贡献。这种做法在一般数据下是 nlog⁡2nn \log^2 nnlog2n,可以被菊花图卡成 n2log⁡nn^2 \log nn2logn考虑如何优化:在树剖的更新时,两条重链之间隔着一条轻边,当向上跳经过这条轻儿子边时,顺便...

2020-01-22 14:17:36 225

原创 2019 CCPC-Camp day1 E.树与路径(树上差分,思维,维护等差序列差分)

代码:#include<bits/stdc++.h>using namespace std;const int maxn = 3e5 + 10;typedef long long ll;vector<int> g[maxn];int n,m,p[maxn][20],dep[maxn];ll A[maxn],B[maxn],ans[maxn];voi...

2020-01-22 01:00:39 167

原创 bzoj 4644 经典傻逼题(线段树分治 + 线性基 + bitset优化)

根据定义,若选择了一条边的一个端点,这条边就要选上,若这条边的两个点都选上了,这条边就不能选。将边权异或到点权上,这样处理后,若选择一个点,则连接这个点的边都会被考虑,若一条边的两个端点都被选中,这条边会因为被异或两次而消失。这样问题转化为每次加入一条边,对原图求线性基。线性基不支持删除修改,由于位数有1000位,如果每加入一条边都暴力重新构造线性基,复杂度为 O(500∗1000∗10...

2020-01-21 16:30:35 225

原创 Codeforce 1293 F. Chaotic V.(思维 + 虚树DP + 数论)

题意:有一个无穷个点的无向图,第 x 个点有个点权 x,x 会连一条无向边到 xf(x)\frac{x}{f(x)}f(x)x​,其中 f(x) 是 x 的最小质因子。输入 n 个关键点(n≤106n \leq 10^6n≤106),它们的标号 是 ki!,ki≤5000k_i!,k_i\leq5000ki​!,ki​≤5000,设这些关键点到 p 的距离和为 sumsumsum,求 su...

2020-01-20 18:58:32 793

原创 2019 南京网络赛 C:Tsy's number 5(欧拉函数 + 思维 + NTT)

由于值域范围比较小,考虑直接枚举欧拉函数值:∑i=1n∑j=1np[i]∗p[j]∗i∗j∗2ij\displaystyle\sum_{i = 1}^n\sum_{j = 1}^np[i]*p[j]*i*j*2^{ij}i=1∑n​j=1∑n​p[i]∗p[j]∗i∗j∗2ijp[i] 表示 i 的出现次数对 2ij2^{ij}2ij做一个变换:2(i+j)2−i2−j22=2(i+j)...

2020-01-18 20:00:26 222

原创 BZOJ4867 : [Ynoi2017]舌尖上的由乃(dfs序,分块)

代码:#include<bits/stdc++.h>using namespace std;#define pii pair<int,int>#define fir first#define sec secondconst int maxn = 1e5 + 10;vector<pii> g[maxn];int n,m,len,st[maxn]...

2020-01-17 12:46:57 216

原创 P4103 [HEOI2014]大工程(虚树DP)

比较裸的模板题,把虚树建出来。代价和显然可以枚举每条边的贡献,最大值和最小值用经典子树合并的做法,维护当前结点为根,关键点的最大深度和最小深度即可。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;const int inf = 0x...

2020-01-16 20:42:25 151

原创 P2495 [SDOI2011]消耗战(虚树DP + 虚树建树模板)

题目大意:给出一棵带边权的树,有 m 次询问,每次询问给出 k 个点,问使得这 k 个点和 根节点不连通的最小代价。n≤250000,m≥1,∑k≤500000n \leq 250000,m \geq 1,\sum k\leq 500000n≤250000,m≥1,∑k≤500000如果暴力 dp,复杂度是 O(n∗m)O(n * m)O(n∗m),难以承受。建立虚树,维护一下每个点到根节点...

2020-01-16 20:06:59 95

原创 P3233 [HNOI2014]世界树(虚树DP , 虚树结构)

题目大意:在一棵树上,每个节点会被最近的一个关键点管辖,如果同时到多个关键点距离都最小,会被标号最小的那个关键点管辖,每次询问 k 个关键点,输出每个关键点的管辖的结点数量。N≤300000,q≤300000,∑i=1qmi≤300000N \leq 300000,q \leq 300000,\sum_{i = 1}^qm_i \leq 300000N≤300000,q≤300000,∑i=1q...

2020-01-16 20:02:37 212

原创 bzoj 2741: 【FOTILE模拟赛】L(可持久化trie + 分块优化)

预处理 aaa 数组的前缀和,问题就变成在[l - 1,r] 区间内找任意两个数,使得异或值尽可能大。用可持久化 trie 暴力做 复杂度是O(32∗n∗m)O(32 * n * m)O(32∗n∗m)即使去掉 32 这个系数,也可能会被卡常,考虑如何优化。考虑预处理一部分区间的答案,令 f[l][r]f[l][r]f[l][r] 表示 区间 [l,r][l,r][l,r] 的答案,显...

2020-01-10 17:28:57 185

原创 bzoj 4137:[FJOI2015]火星商店问题(离线线段树分治 + 可持久化 trie)

题目链接:火星商店问题感觉就是HDU 5390 的加强版询问是一段时间段,而更新是时间点固定商品就是一棵可持久化 trie上区间查找。考虑新购买的商品:在线做法:以时间建一棵线段树,每个节点维护一个可持久化 trie,通过线段树区间查询各个时间段来求得询问的答案。(也就是线段树可持久化 trie 的做法)这么做空间必定裂开。考虑离线做法:询问可以在线段树上分成多个子区间且互不干扰(也...

2020-01-09 16:16:30 162

原创 HDU 5390 :tree(线段树离线分治 + 01字典树)

题目大意:在一棵带点权的有根树上有两种操作:一是修改某个点的权值,二是询问一个点与它到根节点路径上的某个点可异或得到的最大值。一开始想到树上可持久化 trie,但是带修改操作的话每一次修改都得修改它的所有子树。既然修改一个点会影响到它的子树的答案,考虑按 dfs 序来维护一棵线段树,每次将修改更新到它的 dfs序区间。要使得异或上某个值最大,需要用到 01字典树,可以线段树的每一个结点维护...

2020-01-09 12:17:34 317

原创 bzoj 4025: 二分图(线段树分治 + 可撤销并查集)

题目链接:bzoj4025题目大意:有m条边,每条边有一个出线的时刻和消失的时刻,判断每个时刻这个图是否是二分图。判断二分图可以用带权并查集,合并时维护一个 dis[x]dis[x]dis[x] 数组,表示在并查集树上 x 到 其父节点的距离(只需要维护奇偶性),当出现奇环时即该时刻的图不是二分图。因为边有出现和消失两种操作,需要一种可以维护加入和删除的可撤销并查集。对于这类题,可以根据时间...

2020-01-06 11:51:58 276

原创 洛谷 P1084 疫情控制(二分答案 + 树上倍增 + 思维贪心)

答案具有单调性:如果 t 时刻能完成检查点建立,比 t 大的时刻一定行,因此答案具有单调性(这题正是要求所有军队的移动时间的最大值,即最大值最小化问题)如果需要花时间来移动军队,最优的做法是所有军队都往上移。既然如此,可以二分时间,在这个时间内尽可能的把所有军队往上移,但不要移到根节点。考虑如何check:若军队不能移动到根结点,那这些军队肯定无法再移动,直接就地建立检查点,此时用dfs搜...

2020-01-05 14:54:54 732

原创 HDU 4757 :Tree(树上可持久化trie)

题目大意:给一颗带点权的无向树,每次询问 (x,y,v) :x,y 的路径上 找一个点和 v 异或,使得异或出来的权值最大,问最大是多少。和树上主席树一样套路,按dfs序建可持久化trie,求出 x,y 的 lca ,减一下求出 x,y 路径的 trie就行代码:#include<bits/stdc++.h>using namespace std;const int ma...

2020-01-03 16:30:36 237

原创 bzoj 3261: 最大异或和(可持久化trie模板)

可持久化Trie:一般是可持久化 01Trie。01Trie 就是维护一个数字的二进制串的trie,每个结点可以维护数字个数。在求异或最大值(最小值)时,可以从高位到低位贪心判断每一位。例如 :从 a 数组中找一个数使得它和 valvalval 异或最大,将a数组维护到一棵 01trie 中,从高位到低位枚举valvalval的每一位 p,同时在字典树上贪心地沿根节点一路走到叶子结点:若 s...

2020-01-03 15:28:45 217

原创 Codeforce 891 C.Envy(可撤销并查集模板题)

题目大意:输入一个 m 条边的无向图,有 q 个询问,每次询问一组边集,问是否存在一个MST包含这组边。基于Kruscal算法的一个结论:若有一棵MST包含这条边(u,v),那么所有权值比这条边小的边组成的森林或无向图,(u,v)仍不连通。换句话说,权值比这条边小的边都考虑了之后,再考虑(u,v)这条边,(u,v)仍然不会成环。考虑离线的做法:将边按权值分块,将询问边按边权为第一关键字,所...

2020-01-03 00:23:43 1271

原创 P3402 【模板】可持久化并查集(可持久化并查集模板)

题目链接:模板题普通的并查集是通过 fafafa 数组来实现的(或者说是 ppp 数组)可持久化并查集,就是用主席树来维护并查集的 fafafa 数组(因为主席树可以记录过去的版本),使之能回退到过去的版本,这里的版本指的是某个操作之前的 fafafa 数组可持久化并查集的合并部分使用的不是路径压缩来优化,而是使用启发式合并:两棵树合并时,将树深小的合并到树深大的,这样树的高度增长比较慢...

2020-01-02 18:09:41 160

原创 Codeforce 1270 G. Subset with Zero Sum(数学 + 建图构造 + 思维)

题目大意:有一个数组a,满足i−n≤ai≤i−1i - n \leq a_i \leq i - 1i−n≤ai​≤i−1,求该序列的一个子集使得这个子集和为0。转变一下式子得到:1≤i−ai≤n1 \leq i - a_i \leq n1≤i−ai​≤n,对每个 aia_iai​,建一条从 iii 到 i−aii - a_ii−ai​ 的边,由于每个点都有出度,整个图必定有环。对于环可以得到...

2020-01-02 13:26:50 348

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除