————中级数据结构————
文章平均质量分 80
everlasting__
'-'
展开
-
bzoj 4397: [Usaco2015 dec]Breed Counting 前缀和/线段树
→题目链接← 这个题我傻逼了 看到区间查询我下意识地打了线段树 然后一发A了后发现其他人的代码都好快啊 找题解发现都是用的前缀和 靠! 然后又搞了一发前缀和 我把两个代码都放上来吧 前缀和: #include #include using namespace std; int n,m; int sum1[100010],sum2[100010],sum原创 2017-08-28 09:18:18 · 437 阅读 · 0 评论 -
bzoj 3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二
→题目链接← 裸线段树 查询最小值 代码: #include #include #include using namespace std; struct node{ int l,r,Min; }tree[30000*4]; void build(int num,int l,int r){ tree[num].l=l; tree[num].r=r; if(l==原创 2017-09-28 11:16:10 · 298 阅读 · 0 评论 -
bzoj 1798: [Ahoi2009]Seq 维护序列seq 线段树
→题目链接← 【想说的话】 又是一道题解泛滥的题 【题解】 裸线段树,注意乘的时候加的标记也要乘,传标记时要乘一下 看代码吧... 【代码】 #include #define inf 1000000000 #define MAXN 100005 typedef long long ll; using namespace std; inline in原创 2017-11-15 14:35:44 · 217 阅读 · 0 评论 -
bzoj 1503: [NOI2004]郁闷的出纳员 splay
→题目链接← 【想说的话】 数据结构可真是难调啊... 无比的心累 【题解】 平衡树都能过 几天前的我一定会用pbds来做 但是现在 我!不!一!样! 对于增加和减少工资,不用打标记什么的,因为询问时询问的是相对排名,所以记录一下变化量,然后对于新加入的工资减去那个变化量就好了 注意:他找的是第k大的工资! 【代码】 #include #d原创 2017-11-29 16:16:52 · 388 阅读 · 0 评论 -
bzoj 1251: 序列终结者 splay
→题目链接← 【想说的话】 调了两天半... splay原来没有那么shi 【题解】 就是splay...我这里就不写什么splay教程了 (代码里维护了一堆与本题无关的东西) 【代码】 #include #define MAXN 100010 #define inf 1000000000 using namespace std; inline i原创 2017-11-29 08:46:42 · 324 阅读 · 0 评论 -
bzoj 1782: [Usaco2010 Feb]slowdown 慢慢游
→题目链接← 【想说的话】 总是因为一些手误导致调半天... 【题解】 按dfs序建线段树,然后每次先单点查询再区间加1 【代码】 #include #define inf 1000000000 #define MAXN 100010 using namespace std; inline int rd(){ int x=0,y=1;char c=get原创 2017-11-17 08:17:56 · 270 阅读 · 0 评论 -
bzoj 4094: [Usaco2013 Dec]Optimal Milking 线段树
→题目链接← 【想说的话】 再次手误... 【题解】 对于每个区间维护四种最大值 1、选左端点不选右端点 2、选右端点不选左端点 3、两个端点都选 4、两个端点都不选 然后用线段树搞一搞就好了 注意下pushup的转移 【代码】 #include #define MAXN 40040 typedef long long ll; using na原创 2017-11-17 09:52:18 · 264 阅读 · 0 评论 -
bzoj 4499: 线性函数 线段树
→题目链接← 【想说的话】 没什么想说的-____- 【题解】 我们都知道 f2(f1(x))=k2(k1*x+b1)+b2=k1*k2*x+k2*b1+b1 然后用线段树去维护连续的一段最终的f(x)是什么 查询修改就都很简单了... 【代码】 #include #define mod 1000000007 #define MAXN 200020 ty原创 2017-11-23 10:13:38 · 328 阅读 · 0 评论 -
poj 2201 Cartesian Tree 笛卡尔树
→题目链接← 【想说的话】 谁能告诉我笛卡尔树有什么妙的用处啊.... 【题解】 裸笛卡尔树 笛卡尔树的定义题中已经说的挺完整的了 建树时,先把所有的点以key从小到大排序,然后从前往后插入到树中 具体实现方法为:从根节点开始扫,当找到一个点满足val[x]大于val[now]并且val[x的右儿子]小于val[now](假设我们维护的是大根堆)时,就把【now】的父原创 2017-12-04 18:59:53 · 362 阅读 · 0 评论