[Luogu3733][HAOI2017]八纵八横】的更多相关文章

luogu sol 线性基+线段树分治傻题. 复杂度应该是\(O((n+m\log n)\frac{L^2}{\omega})\)? code #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<bitset> using namespace std; const int N = 1005; #define ll bitset<N&…
[Luogu3733][HAOI2017]八纵八横(线性基,线段树分治) 题面 洛谷 题解 看到求异或最大值显然就是线性基了,所以只需要把所有环给找出来丢进线性基里就行了. 然后线性基不资磁撤销?线段树分治,没了. #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<bitset> using namespace std; #define…
不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路的两端都是城市(可能两端是同一个城市),保证任意两个城市都可以通过高速公路互达. 国正在筹划“八纵八横”的高铁建设计划,计划要修建一些高速铁路,每条高速铁路两端也都是城市(可能两端是同一个城市),也都有一个非负整数的经济影响因子.国家还计划在“八纵八横”计划建成之后,将“一带一路”扩展为“一带_路一…
LOJ 洛谷 最基本的思路同BZOJ2115 Xor,将图中所有环的异或和插入线性基,求一下线性基中数的异或最大值. 用bitset优化一下,暴力的复杂度是\(O(\frac{qmL^2}{w})\)的.(这就有\(70\)分?) 因为最开始的图是连通的,可以先求一个\(dis[i]\)表示\(1\)到\(i\)的异或和.每次加边会形成环,就是在线性基中插入一个元素. 因为有撤销,所以线段树分治就好了.线段树上每个节点开一个线性基.同一时刻只需要\(\log\)个线性基的空间. 复杂度\(O(\…
题面 题面 题解 观察到题目中的 "内陆经济环" 不好处理,因此我们把它拆成 "内陆经济链". 对于1号节点,我们创建一个它的复制节点n + 1号节点,这个节点继承1号节点的所有边,可以发现,一个1到1的内陆经济环,和一个1到n + 1的内陆经济链是等价的,因此我们只需要考虑如何在一个变化的图上维护一个点到另一个点的最大xor和即可. 观察到删边只会删去后来加入的边,所以就很好处理了,我们用线段树分治(时间分治)来维护. 具体求从1到n + 1的最大xor和的方法参…
Descroption 原题链接 给你一个\(n\)个点的图,有重边有自环保证连通,最开始有\(m\)条固定的边,要求你支持加边删边改边(均不涉及最初的\(m\)条边),每一次操作都求出图中经过\(1\)号点的环的抑或值的最大值,每个节点或边都可以经过多次(一条路经过多次则会被计算多次). Solution \(~~~~\)好久都没发过博客了一定是我改题如蜗牛哎.对于每一次操作都要输出答案,考虑用线段树分治离线.先在图中随便弄出一颗以\(1\)为根的生成树,若之后再加了一条边\((u, ~v)~…
八纵八横 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路的两端都是城市(可能两端是同一个城市),保证任意两个城市都可以通过高速公路互达. 国正在筹划"八纵八横"的高铁建设计划,计划要修建一些高速铁路,每条高速铁路两端也都是城市(可能两端是同一个城市),也都有一个非负整数的经济影响因子.国家还计划在"八纵八横"计划建成之后,将"一带一路"…
题意 题目链接 Sol 线性基+线段树分治板子题.. 调起来有点自闭.. #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define bit bitset<B + 1> using namespace std; const int MAXN = 501, B = 1001, SS = 4001; inline int read() { char c = getchar…
题目:https://loj.ac/problem/2312 https://www.luogu.org/problemnew/show/P3733 原本以为要线段树分治+LCT,查了查发现环上的值直接是 dis[ u ] ^ dis[ v ] ^ w[ i ] 就行了(其中 u , v 是边的两端, i 是边的标号). 再看一下题,发现一开始一定是连通的.所以剩下的就和 bzoj 4184 shallot 一样用线性基就行了. 因为有 1000 位,所以用 bitset . 线性基求最大值原来…
根据$[WC2011]XOR$的思路,每次暴力重构线性基,令$l'=\frac{l^{2}}{w}$,则有一个$nql'$的做法(这里线性基位数很多,所以要用bitset) 由于初始连通,因此每一个环一定可以由若干个[树边+1条非树边]的环构成(构成指异或),那么预处理出每一个操作的环大小,相当于维护一个支持插入和删除的线性基(修改操作可以看成删除+插入操作) 证明:归纳k条新边($k=1$显然成立)可以划分,对$k+1$条新边的环,设新边依次为$(l1,r1),(l2,r2),--,(l_{k…