![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
jackzhan01
jackzhan
展开
-
10.18二中校内T3图论+线段树+网络流(??)
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring&amp原创 2018-10-31 09:46:56 · 134 阅读 · 0 评论 -
数据结构学习笔记
数据结构1.堆2.线段树3.树状数组4.单调栈5.单调队列原创 2019-07-17 13:16:14 · 157 阅读 · 0 评论 -
树链剖分
代码思路https://www.cnblogs.com/George1994/p/7821357.html传送门https://www.luogu.org/problemnew/show/P3384#include<iostream>#include<cstdio>#include<cstri转载 2018-10-21 21:44:57 · 157 阅读 · 0 评论 -
IOI2011-Race -点分治
https://www.luogu.org/problemnew/show/P4149思路点分治的calc函数有两种形式:一种是把先算整个树的贡献,再减去每个子树内不合法的。我们发现这类问题都有可减性(求和),可以容斥来解;第二种无法容斥是就是一个一个子树的计算,计算完一个子树之后,再用他来更新。此题为第二类。对于一个分治重心u,我们顺序计算每一个子树的贡献,记录d[i]为之前子树到u的长...原创 2019-01-28 17:12:28 · 135 阅读 · 0 评论 -
点分治模板
https://www.luogu.org/problemnew/show/P3806点分治点分治的分治中心是重心,所以先要会找重心找重心void getroot(int u,int fa){ sim[u]=1;mxson[u]=0; for(int i=head[u];i;i=edge[i].nxt) { int v=edge[i].v; int w=edge[i]....原创 2019-01-28 13:12:43 · 197 阅读 · 0 评论 -
poj2570
http://poj.org/problem?id=2570思路最大环上字段和=max(序列最大字段和,sum-序列最小字段和)code#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const i...原创 2019-01-27 21:00:00 · 121 阅读 · 0 评论 -
hdu2665-主席树
题目大意静态区间第 k 小数给定一个长度为 n 的序列 A,你需要回答 q 次询问。每次询问给定l; r; k,你需要回答 A 序列 [l; r] 区间内第 k 小的数字。n; q ≤ 105; 1 ≤ k ≤ r − l + 1; 1 ≤ l ≤ r ≤ n; jAij ≤ 109思路我们对于每个前缀 i,求出包含 A1; A2; ; Ai 所有元素的权值线段树。询问时只需要在...原创 2019-01-27 18:45:20 · 163 阅读 · 0 评论 -
11.2清北test4T1优先队列模拟
思路每次要让pos最小,且val最小的猫吃鱼用小根堆维护#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<cmath>#include<cstdlib>原创 2018-11-02 22:23:48 · 115 阅读 · 0 评论 -
11.2 BZOJ4260 trie
BZOJ4260:求两个子序列异或和之和最大trie树+dp(??)思路0^ a=a, a^a =0;令sum[i]=a[1] ^ a[2] ^ a[3] ^ …… ^ a[i],所以令sum[i]=a[1] ^ a[2] ^ a[3] ^ …… ^ a[i],所以a[l]^ ……^ a[r] =sum[r]^sum[l-1]所以求一段区间的异或和最大,只要让他们的前缀和异或和最大...原创 2018-11-02 15:10:05 · 91 阅读 · 0 评论 -
01字典树加强版HDU 5536
01字典树加强版HDU 5536http://acm.hdu.edu.cn/showproblem.php?pid=5536简化版题意:在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i、j、k 各不相同。这个题目我们就不能直接套用模板了,问题出在哪里?是因为i、j、k不能相同,所以直接查询tire树会出现问题。怎么办?一个很直观的想法是删除。对k建trie树,...原创 2018-11-02 09:53:56 · 115 阅读 · 0 评论 -
01字典树题目清单+详解
https://blog.csdn.net/zuzhiang/article/details/79872805转载 2018-11-02 09:49:56 · 561 阅读 · 0 评论 -
10.30 POJ 3494单调栈
http://poj.org/problem?id=3494https://blog.csdn.net/zuzhiang/article/details/78136417#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#原创 2018-10-30 11:43:52 · 442 阅读 · 1 评论 -
POJ 3250单调栈模版+题目清单
https://blog.csdn.net/zuzhiang/article/details/78134247http://poj.org/problem?id=3250#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#原创 2018-10-30 08:29:52 · 392 阅读 · 0 评论 -
11.1二中校内模拟赛T1 trie树+递归
题干玩具装箱(eirt.cpp/c/pas)【问题描述】你有两堆物品分别有n1,n2个,每个物品有两个属性ai,bi。你要从两堆中分别选一个物品,满足a1^a2&lt;=m( ^表示异或)的前提下最大化b1+b2。【输入格式】输入文件名为eirt.in。第一行包含 3 个整数 n1,n2,m。接下来的 n1行每行包含两个整数ai,bi。接下来的 n2 行每行包含两个整数ai,b...原创 2018-11-01 23:16:37 · 136 阅读 · 0 评论 -
10.29 cf283E合法三元环+线段树
题意思路pre_work sort+离散化首先,我们考虑一个暴力,O(nnm);考虑一个矩阵,a[i][j]表示i和j对战的结果,0表示i输,1表示i赢,那么可以只考虑右上方的rt三角形,每次修改只要baoli修改一个RT三角形即可瓶颈在于区间修改及查询,可以想到线段树,又发现对于i来说只有覆盖i的修改才对i有用#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;原创 2018-10-29 19:43:23 · 497 阅读 · 0 评论 -
10.29 T1 max 单调栈+贡献法+二阶差分
#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstring&amp;gt;#include&amp;lt;algorithm&amp;gt;using namespace std;typedef long long ll;const int原创 2018-10-30 17:07:26 · 130 阅读 · 0 评论 -
10.29 T2 magic 逆序对+前缀和
思路先特判掉-1,-2如何?? 对a和b分别求一下前缀和,如果sum[i]==sum[i+k]则说明这个区间(i-k)和为0考虑修改其实就是把a的前缀和相邻两个元素交换顺序那么问题转化为把1-n的排列a通过最少的交换次数得到给定的排列b,求最少方案数这个问题用树状数组求(或归并排序)#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;g原创 2018-10-30 20:33:02 · 145 阅读 · 0 评论 -
10.31逆序对luogu1908
传送门https://www.luogu.org/problemnew/show/P1908思路考虑i产生的逆序对就是i前面比他大的数的个数(区间查询)考虑i对后面产生的影响就是他会给比他小的数产生贡献,或者说i这个数有了,出现了(单点修改)显然可以用树状数组或线段树维护plus我们考虑把一个序列a通过最少的交换次数使之变成b(a,b皆为1-n的排列),只要把a的元素与位置映射,再...原创 2018-10-31 16:26:06 · 89 阅读 · 0 评论 -
P3178 [HAOI2015]树上操作-树链剖分
有一棵点数为 N 的树,以点 1 为根,且树点有权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。这个题比较简单,操作3的根是固定的容易写错的地方,一个是树上的点x,要在线段树里一定是dfn[x]#include<iostr...原创 2019-08-10 19:32:12 · 126 阅读 · 0 评论