上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页
  2012年8月28日
摘要: 题意:n幢摩天大楼,第i幢初始高度为a[i],每个单位时间增长b[i]。询问区间[x,y]的大楼在t时刻的最大高度。虽然是区间查询,线段树不会搞。先读入询问,对时间非降排序,离线搞是很显然的。分成sqrt(n)块,在区间内的每块在常数时间内得到答案,两端暴力答案。高度y[i]=a[i]+b[i]*t,是直线方程。所以每块在常数时间得到答案,就要维护每块直线的单调性,剔除不影响答案的直线。由于块内答案是递增的,所以直线的斜率也是递增的。所以对每块的直线斜率非降排序。设有k1,k2,k3三条直线,且斜率递增,若k1与k2的交点在k3的下方,那么k2显然是多余的。纸上yy一下,比较时把除法化为乘法, 阅读全文
posted @ 2012-08-28 18:18 DrunBee 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个洞,编号1~n,每个洞有一个power,若有球掉入第i个洞,会被弹到第i+power[i]个洞。两种操作:1,球掉入第i个洞后,问弹出n个洞前最后掉入的洞的编号,以及弹的次数。2,修改第i个洞的power值。很裸的动态树。与这题本质上是相同的:【HYSBZ】1036 树的统计Count但是,通过分块暴力,可以做到O(n*sqrt(n))。很显然,将1~n分成sqrt(n)块。一个很直接的想法,把a块的最后一个直接指向b块的最后一个(a!=b),这样暴力非完整的块,其他块O(1)得到。但是,可以有更简单的写法,把相同块中每个洞都指向会到达的最后一个洞,并统计其中跳过多少个。查询就暴力 阅读全文
posted @ 2012-08-28 13:15 DrunBee 阅读(373) 评论(0) 推荐(0) 编辑
  2012年8月27日
摘要: 题意:给出n个节点,编号0~n-1。1 把[x,y]颜色覆盖为z。2 询问[x,y]颜色为z的有多少个。题解:http://page.renren.com/601081183/note/867254911懒得hash,直接用map搞。把数列分成sqrt(n)段,如果每段在完整的查询区间内,可以O(1)得到答案,否则对该段暴力答案。 1 #include<cstdio> 2 #include<cmath> 3 #include<map> 4 #define EPS 1e-8 5 #define MAXM 331 6 #define MAXN 100010 7 阅读全文
posted @ 2012-08-27 17:08 DrunBee 阅读(337) 评论(0) 推荐(0) 编辑
  2012年8月26日
摘要: 0、BFS将无根树转化为有根树。1、bef[x]=y。表示x的父亲是y。这样建树构成了一片森林。2、Access(x)。表示以x为起点,一直到根节点,构造出一条链。这条链用splay维护,可以很好的支持插入和删除操作。这条链只有根节点与原树有联系。3、Splay(x)。同伸展树,用于维护提取出的链。通过splay操作,使得均摊logn。4、MakeRoot(x)。表示把x节点设为根。一棵树根的变化,仅与x到根的路径有关,即把路径反向即可。因此相当于把x到根的链翻转,bef构成的森林不变。A、操作1:link,操作2:cut。【HDU】2475 BoxB、路径中单点更新/成段更新/查询。(其实这 阅读全文
posted @ 2012-08-26 23:39 DrunBee 阅读(3489) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 300010 7 #define MAXM 600010 8 #define CLEAR(a,b) memset(a,b,sizeof(a)) 9 using namespace std; 10 int first[MAXN], next[MAXM], v[MAXM], e; 11 bool vis[MAXN 阅读全文
posted @ 2012-08-26 22:45 DrunBee 阅读(995) 评论(0) 推荐(0) 编辑
  2012年8月25日
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<queue> 5 #define MAXN 100100 6 #define MAXM 200100 7 using namespace std; 8 bool vis[MAXN]; 9 int e, first[MAXN], next[MAXM], v[MAXM]; 10 struct LCT { 11 int bef[MAXN]; 12 int next[MAXN][2], pre[MAXN], key 阅读全文
posted @ 2012-08-25 18:01 DrunBee 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 10010 6 #define MAXM 20010 7 using namespace std; 8 struct LCT { 9 int bef[MAXN]; 10 int next[MAXN][2], pre[MAXN], key[MAXN], sum[MAXN], num[MAXN]; 11 void Init() { 12 memset(ne... 阅读全文
posted @ 2012-08-25 15:02 DrunBee 阅读(605) 评论(1) 推荐(0) 编辑
  2012年8月23日
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 100010 6 #define MAXM 200010 7 using namespace std; 8 struct LCT { 9 int bef[MAXN], belong[MAXN]; 10 int next[MAXN][2], pre[MAXN], key[MAXN], sum[MAXN]; 11 void Init() { 12 mems... 阅读全文
posted @ 2012-08-23 22:40 DrunBee 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 50010 6 #define MAXM 100010 7 using namespace std; 8 struct LCT { 9 int bef[MAXN]; 10 int next[MAXN][2], pre[MAXN], key[MAXN], add[MAXN]; 11 void Init() { 12 memset(next, 0, siz... 阅读全文
posted @ 2012-08-23 22:07 DrunBee 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 100010 7 #define MAXM 200010 8 #define oo 0x7FFFFFFF 9 using namespace std; 10 bool vis[MAXN]; 11 int first[MAXN], next[MAXM], v[MAXM], cost[MAXM], e; 12 s 阅读全文
posted @ 2012-08-23 21:40 DrunBee 阅读(711) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页