数据结构
zzuzxy
牛顿说:“我不知道世人怎样看我,但我自己以为我不过像一个在海边玩耍的孩子,不时为发现比寻常更为美丽的一块卵石或一片贝壳而沾沾自喜,至于展现在我面前的浩翰的真理海洋,却全然没有发现。”
展开
-
数列游戏IV
ZZUOJ 10508: 数列游戏IV题意给定一个序列,长度为N,每次询问为一组区间[Li,Ri],输出Li到Ri中出现恰好两次的不同数的个数. Input 第一行两个整数N和M,N表示序列长度,M表示询问次数.(N,M<=2*10^5) 第二行N个整数,表示序列.(序列中元素<=10^9) 以后M行,每行为Li和Ri,表示询问区间.(1<=Li<=Ri...原创 2017-09-09 23:18:07 · 259 阅读 · 0 评论 -
树
树分治树的重心我们选取一个点,要求将其删去后,结点最多的树的结点个数最小,这个点被称为“树的重心”。POJ1644// Size[u] 代表以节点u为根的子树节点个数// dp[u] 代表去除u节点后最大子树的节点个数const int maxn = 2e4+100;vector&lt;int&gt; G[maxn];int dp[maxn];int Size[maxn];i...原创 2018-09-28 00:35:48 · 115 阅读 · 0 评论 -
Free tour II SPOJ - FTOUR2 点分治和启发式合并 详细解释论文
文章目录Free tour II SPOJ - FTOUR2点分治不经过根经过根暴力选择两个子树求最优的情况启发式合并Free tour II SPOJ - FTOUR2点分治 每次选择重心作为根进行分治,有两种情况,最优解的路径经过树根,和不经过根不经过根递归到下一层子树上经过根暴力选择两个子树求最优的情况先考虑暴力的情况需要选择两个子树u,vG(i,j) 代表子树i,往...原创 2018-09-29 16:34:20 · 172 阅读 · 0 评论 -
洛谷 P4886 快递员 树的重心
文章目录洛谷 P4886 快递员题意分析参考代码洛谷 P4886 快递员题意在一个树上有m对点(ui,vi),(u_i,v_i),(ui,vi), 我们在这个树上选择一个点root 使得distance(root,vi)+distance(root,ui)distance(root,v_i)+distance(root,u_i)distance(root,vi)+distance(ro...原创 2018-09-30 16:45:21 · 339 阅读 · 0 评论 -
M × N Puzzle POJ - 2893
文章目录M × N Puzzle POJ - 2893树状数组求逆序数归并排序求逆序数M × N Puzzle POJ - 2893如果m-1 为偶数,则无论上下左右移动都不会影响逆序对数的奇偶性如果m-1为奇数,上下移动会使得逆序对数的奇偶性改变,判断当前空格的行数和最后的行数的差值与逆序对数的奇偶性是否相同即可树状数组求逆序数const int maxn = 1e6+10;i...原创 2019-03-28 00:57:41 · 235 阅读 · 0 评论 -
分块
文章目录分块1 区间修改,区间查询蒲公英 BZOJ2724磁力块分块当维护的信息不满足区间可加,可减性的时候,用线段树或者树状数组维护的时候较为困难,通过分块划分+预处理可以有效的解决一些问题1 区间修改,区间查询A Simple Problem with Integers POJ - 3468将1… n 分成n\sqrt{n}n块,每块大小n\sqrt{n}n,对于每次修改或者查询...原创 2019-04-11 22:11:56 · 130 阅读 · 0 评论 -
J - The Big Painting Gym - 100783J
J - The Big Painting Gym - 100783J二维hash匹配ULL mod1 = 1e10+7;ULL mod2 = 1e11+7;const int maxn = 2000+10;ULL gen,b[maxn],pm1[maxn],pm2[maxn];char ar[maxn][maxn],br[maxn][maxn];int r,c,n,m;void G...原创 2019-04-10 01:27:26 · 265 阅读 · 0 评论 -
icpc nanchang J Distance on the tree
J Distance on the treezxy好弱啊,赛中分析好久也没想出来,结果题解出来发现我是个大傻逼,这个题我在刚刚过去的icpc省赛补过,再次出我就不会了,啊啊啊啊,我好弱啊题意: 每次在树上查询 从u -v 路径上的边的权值小于k的边有多少个分析:我们发现每次查询可以化简成,查询每个节点到根有多少个,然后求出u,v的lca, ans(u) +ans(v)-2*ans(lca(u...原创 2019-04-22 00:38:59 · 158 阅读 · 0 评论 -
ICPC nangchan I. Max answer
文章目录I. Max answer分析代码I. Max answer分析题意: 定义一个区间的值为这个区间最小值乘以区间和分析:我们要枚举每一个值作为区间最小值时的贡献即可,这样不会漏掉任何情况,但是我们需要统计一个信息,确定了区间最小值,我们还要枚举这个区间,这个区间的最小值已经确定,但是左右边界却不知道,怎么确定左右边界呢?1.单调栈可以统计一个值作为区间最小值左右端点的信息,不清楚...原创 2019-04-22 17:45:18 · 488 阅读 · 0 评论 -
2019 icpc nanchagn invitation 题解
文章目录D. Match Stick GameI. Max answerJ Distance on the treeE card GameD. Match Stick Gamehttps://blog.csdn.net/weixin_38686780/article/details/89459343I. Max answerhttps://blog.csdn.net/weixin_3868...原创 2019-04-22 20:00:23 · 231 阅读 · 0 评论 -
Fast Matrix Operations UVA - 11992
文章目录原版刘汝佳的代码有很多maintain语句,个人感觉这样很不符合习惯,所以做出了修改,更符合我的习惯1: 只保留一个update时的maintain语句2:时刻记着延迟标记只是延迟往下的标记,并不延迟节点本身,时刻修改,当延迟标记下到某个地方,它的值就应该被修改// UVa11992 Fast Matrix Operations(更易读、更具一般性的版本)// Rujia Liu...原创 2019-05-01 01:00:23 · 133 阅读 · 0 评论 -
1002 ( array )
#include <bits/stdc++.h>#define mem(ar,num) memset(ar,num,sizeof(ar))#define me(ar) memset(ar,0,sizeof(ar))#define lowbit(x) (x&(-x))#define Pb push_back#define FI first#define SE ...原创 2019-08-23 17:21:30 · 528 阅读 · 1 评论 -
LCT (Link-cut-tree)
文章目录LCTLCT定义学习资料LCT快退役了学一波以前听过很多次但没时间学的东西LCT定义学习资料维基百科 https://en.wikipedia.org/wiki/Link/cut_tree论文 https://wenku.baidu.com/view/75906f160b4e767f5acfcedb...原创 2018-10-03 23:48:10 · 313 阅读 · 0 评论 -
Red Black Tree ZOJ - 4048
LCA+二分#include <bits/stdc++.h>#define mem(ar,num) memset(ar,num,sizeof(ar))#define me(ar) memset(ar,0,sizeof(ar))#define lowbit(x) (x&(-x))#define Pb push_back#define FI first#defin...原创 2018-09-19 00:30:35 · 233 阅读 · 4 评论 -
BZOJ1568 李超树
翻译:每个直线可以表示成y = a*x+b; 给出n个不同的直线,查询在某个点的最大的y值// 每一个节点存的是当前节点取最大值的线段的ID// 查询的时候从根到子节点都查询值,取其中的最大值// 插入点的时候// 更新节点的规则就是如果插入直线比当前直线更优,那么说明原本直线对某区间的最优答案没有贡献,这个时候它就可以舍弃// 共有四种情况// 插入直线的斜率大于节点存的斜率,/...原创 2018-09-17 00:46:14 · 270 阅读 · 0 评论 -
17 Cows POJ - 2481
Cows POJ - 24811 题意&nbsp;&nbsp;给出n个牛的取食范围 [Si,Ei],若Si&lt;= Sj,Ej&lt;=Ei,Ei-Si &gt; Ej-Sj;则称i牛大于j牛,问对于每一个牛,有多少个牛比它大2 分析对于n个牛,先按照有断点进行排序,排序之后用树状数组插入和查询,只需要比较左端点,左端点比i牛小,说明比i牛大(相等的除外)4 参考原创 2017-09-02 23:39:59 · 186 阅读 · 0 评论 -
Color the ball HDU - 1556
N个气球排成一排,从左到右依次编号为1,2,3….N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽”牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗? Input 每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2...原创 2017-08-06 07:51:43 · 676 阅读 · 3 评论 -
Fence Repair POJ - 3253
Fence Repair Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer l...原创 2017-08-06 23:47:39 · 167 阅读 · 0 评论 -
堆的插入和删除
void Insert(int vv){ int t = sz++; h[t] = vv; while(t > 1) { if(h[t] < h[t/2]) { swap(h[t],h[t/2]); t /= 2; } else break;...原创 2018-03-30 17:41:53 · 257 阅读 · 0 评论 -
L2-013. 红色警报
L2-013. 红色警报#include<bits/stdc++.h>using namespace std;const int maxn = 1000+10;int v[maxn];int sz = 1;const int maxh = 20000+10;int h[maxh];const int TT = 10000;void Insert(int vv)...原创 2018-03-30 17:43:53 · 189 阅读 · 0 评论 -
C++ STL 容器适配器(queue,priority_queue,stack)
queueFIFO(First in First out)queue&amp;amp;amp;lt;int&amp;amp;amp;gt; q; // 初始化&amp;amp;amp;lt;&amp;amp;amp;gt;里可以是任何类型q.push(10); //在末尾添加元素q.front(); // 返回队列首元素q.back(); // 返回队列末尾元素q.empty()转载 2018-03-21 21:42:18 · 279 阅读 · 0 评论 -
ZOJ Problem Set - 4016
ZOJ Problem Set - 4016链表操作,数组实现,其中记得要保存链表的头参考代码#include<bits/stdc++.h>using namespace std;const int maxn = 1e6+100;int shu[maxn];int point[maxn];int pre[maxn];int First[maxn];...原创 2018-04-08 21:19:57 · 157 阅读 · 0 评论 -
牛客多校第一场总结
ADJ树状数组+平移#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;原创 2018-07-20 01:35:06 · 982 阅读 · 0 评论 -
主席树学习指导
主席树主席树是函数式编程的线段树(其实我不知道它是什么意思)推荐博客图文讲解,简单易懂 http://www.cnblogs.com/Empress/p/4652449.html原创 2018-08-31 22:31:51 · 145 阅读 · 0 评论 -
数据结构习题集
数据结构习题集1 D-query SPOJ - DQUERY数据结构习题集1 D-query SPOJ - DQUERY查询区间不同数的个数,线段树离线,主席树在线做原创 2018-09-01 10:04:19 · 935 阅读 · 0 评论 -
2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 1004 path
#include <bits/stdc++.h>#define mem(ar,num) memset(ar,num,sizeof(ar))#define me(ar) memset(ar,0,sizeof(ar))#define lowbit(x) (x&(-x))#define Pb push_back#define FI first#define SE s...原创 2019-08-23 18:00:44 · 269 阅读 · 0 评论