上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页
摘要: 一道模拟题,每次给一个值只需要找从左到右第一个小于它的值,用线段树维护一个区间最小值即可。 只有当左儿子的最小值大于当前值才去找右儿子。 当时好像我们集体读错题了,但是我的代码依然可以a,不过忘了判断kkk是不是-1是真的真的真的很难受。 #pragma comment(linker, "/STAC 阅读全文
posted @ 2018-09-01 20:00 LMissher 阅读(309) 评论(0) 推荐(0)
摘要: 所谓树链剖分就是把树上的路径转化为连续的区间从而用各种数据结构解决树上的问题。 而转化为区间则是利用其重链的性质把一条树上的路径变成很多连续的重链从而加速找两点的lca。 并在节点向上跳的过程中对区间用数据结构做更新操作,或是将连续的重链保存做离线操作。 常见的树链剖分有更新链或子树的权值并求其权值 阅读全文
posted @ 2018-08-31 22:03 LMissher 阅读(306) 评论(0) 推荐(0)
摘要: 给n个数字与q次询问,每次询问找出区间不同数字的个数并输出在这个区间里第"(个数+1)/2"次出现的数字。每个数字只有第一次出现会被计数。 考虑主席树对区间不同个数的统计是基于重复的数字只保留最后出现的那次也就是说我们可以找到从后往前数字第一次出现的计数。 但现在要求的是从前向后,考虑从后向前建立主 阅读全文
posted @ 2018-08-31 21:34 LMissher 阅读(194) 评论(0) 推荐(0)
摘要: 主席树求区间不同数字个数模板题。 求不同个数就是把数组下标建一颗主席树,如果当前数字已经在前面出现过,那么在当前线段树里把之前出现的区间-1,然后把现在出现的区间+1。 -1是因为当前点和重复数字出现的区间所组成的区间答案要减1,+1相当于现在出现了一个新的数字。 查询的时候查询第R颗线段树的出现L 阅读全文
posted @ 2018-08-31 16:29 LMissher 阅读(177) 评论(0) 推荐(0)
摘要: 题目是一个n个点的数,q次询问,每次询问回答一条路径上第k小数。 在树上建主席树,每个点的状态可以从父亲节点得到。 求答案时答案由路径两个端点的权值线段树之和减去lca和lca父亲节点的权值线段树之和。 因为两个端点的权值线段树之和会多算一次跟节点到lca路径上出现的权值以及根节点到lca父亲节点路 阅读全文
posted @ 2018-08-31 14:46 LMissher 阅读(169) 评论(0) 推荐(0)
摘要: 主席树求区间小于某个数的数的个数模板(静态) #include <bits/stdc++.h> using namespace std; const int M = 1e5+7; int _,n,q,a[M],ls[M],tot,sz,pos,cas=1; int L[20*M],R[20*M],T 阅读全文
posted @ 2018-08-31 13:21 LMissher 阅读(125) 评论(0) 推荐(0)
摘要: 模板 #include <bits/stdc++.h> using namespace std; const int M = 1e5+7; int _,n,q,a[M],ls[M]; int L[M*20],R[M*20],num[M*20],T[M],tot,pos;//L每个节点的左子树,R每个 阅读全文
posted @ 2018-08-31 10:09 LMissher 阅读(142) 评论(0) 推荐(0)
摘要: SPFA求负环模板(dfs无情被卡掉,老老实实用bfs比较好) #include <bits/stdc++.h> #define mem(x) memset(x,0,sizeof(x)) #define mem1(x) memset(x,-1,sizeof(x)) using namespace s 阅读全文
posted @ 2018-08-30 22:05 LMissher 阅读(157) 评论(0) 推荐(0)
摘要: 给一个有向图,奶牛每次从图中任意一个点出发回到该点(至少经过两个点)。问sigma(点权)/sigma(边权)的最大值可以是多少。 首先从起点出发回到起点所经过的路程肯定是一个环。设最大值为ans。那么sigma(点权)/sigma(边权)=ans。 稍微化简上式子可以得到sigma(边权)*ans 阅读全文
posted @ 2018-08-30 20:54 LMissher 阅读(166) 评论(0) 推荐(0)
摘要: 权值线段树求第k小。 题意给n个数所有前缀中的逆序对数,构造出原序列。 第i个前缀减去第i-1个前缀就是第i个值插入序列后增加的逆序对,也就是说前面有这么多数比当前数大。那么i减去这个数代表当前数是前i个数的区间第k小。 维护一个权值线段树,初始节点权值分别为1...n。 从后向前考虑,每遇到一个数 阅读全文
posted @ 2018-08-30 10:54 LMissher 阅读(133) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页