摘要: 题意:1 区间每个数加D2 区间翻转3 区间向右滚动T次 12345滚动1次为512344 第x个数后面添加p5 删除第x个数6 询问区间最小值分析:结点[0]的信息不能修改,原因不明。。。翻转操作不能直接rev[x]=1, 而要rev[x]^=1。 keyTree未必已经pushDownpushDown(x) if(x==0)return; 可以节省不少时间#define keyTree (ch[ ch[root][1] ][0])const int vaf=0x7fffffff;const int MaxN = 100005;struct SplayTree{ int sz[M... 阅读全文
posted @ 2013-06-22 16:25 心向往之 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题意:给定数列,要求每次找到最小的数,输出是第几个,将其本身连同左边翻转,然后删除这个数。如果最小的数不止一个,则取元数列中靠前的那个。分析:要注意边界情况,以及孩子为0的情况 。结点存储原数列中的下标,子树中最小元素的下标。为了找到最小元素,还要存储最小元素来自左子树还是右子树。#define keyTree (ch[ ch[root][1] ][0])const int vaf=0x3fffffff;const int MaxN = 100005;struct SplayTree{ int sz[MaxN]; int ch[MaxN][2];//ch[][0]左孩子 ch[]... 阅读全文
posted @ 2013-06-22 16:22 心向往之 阅读(294) 评论(0) 推荐(0) 编辑
摘要: poj1151 矩形面积并 离散化+排序+扫描线int NUM,FLAG;double BIT; //long long float#define DIG(a) (((a)>='0')&&((a)>1; if(a==c&&b==d) T[i].cover+=val; else if(d=m) UpDate(rson,c,d,val); else{ UpDate(lson,c,m,val); UpDate(rson,m,d,val); } if(T[i].cover>0) { T[i].s=hashx[b]-has... 阅读全文
posted @ 2013-06-22 15:52 心向往之 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题意:三种动物,A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 1) 当前的话与前面的某些真的话冲突,就是假话; 2) 当前的话中X或Y比N大,就是假话; 3) 当前的话表示X吃X,就是假话。 输 阅读全文
posted @ 2013-06-22 14:19 心向往之 阅读(129) 评论(0) 推荐(0) 编辑