随笔分类 -  ACM-线段树

摘要:题意:N个工兵营地,第i个营地有ai个人。三种操作:1.第i个营地增加x个人。2.第i个营地减少x个人。3.查询第i个到第j个营地的总人数。思路:线段树or树状数组代码:(树状数组)int n;int a[50005];int C[50005];void init(){ rep(i,1,n){... 阅读全文
posted @ 2015-03-06 15:46 fish7 阅读(123) 评论(0) 推荐(0)
摘要:题意:GTY有n个朋友,站成一排,每个人有一个特征值ai。有m个询问。每次询问给两个数L,R。问你[L,R](即aL...aR)是否是1..(R-L+1)的一个全排列。是输出YES,否则输出NO思路:先判断是否segma(a[L,R])是否等于(R-L)*(R-L+1)/2。记录每一个ai上一次的位... 阅读全文
posted @ 2015-03-02 21:46 fish7 阅读(167) 评论(0) 推荐(0)
摘要:题意:①首先定义S为一个有序序列,S={ A1 , A2 , A3 , ... , An },n为元素个数 ; ②然后定义Sub为S中取出的一个子序列,Sub={ Ai1 , Ai2 , Ai3 , ... , Aim },m为元素个数 ; ③其中Sub满足 Ai1 d (1 >1; b... 阅读全文
posted @ 2015-02-28 17:57 fish7 阅读(290) 评论(0) 推荐(0)
摘要:题意:三种操作:1. add x – add the element x to the set;2. del x – remove the element x from the set;3. sum – find the digest sum of the set. The digest sum s... 阅读全文
posted @ 2015-01-28 10:40 fish7 阅读(116) 评论(0) 推荐(0)
摘要:题意:h*w的白板。有n个广告牌,每个广告牌是1*wi。必须放置在白板的upmost中的leftmost。输出n个广告牌放置在第几行。如果放不下,输出-1。数据规格:h, w, and n (1 > 1; build(lson); build(rson);}int query(int x... 阅读全文
posted @ 2015-01-28 09:47 fish7 阅读(155) 评论(0) 推荐(0)
摘要:题意:给你N个数,N个数是0~N-1的一个全排列。要求统计它的所有形式的逆序对的最小值。它的所有形式的意思是,不断将数组开头的第一个数放到数组的最后面。逆序对:iaj思路:树状数组也可以,,看代码代码:const int maxn = 50005;int sum[maxn> 1; build(... 阅读全文
posted @ 2015-01-25 18:32 fish7 阅读(109) 评论(0) 推荐(0)
摘要:题意:N个成绩。M个操作。Q a b:查询第a个到第b个成绩中最高成绩U a b:将第a个成绩改成b思路:看代码,,代码:const int maxn = 200010;int maxs[maxn> 1; build(lson); build(rson); PushUp(rt);}... 阅读全文
posted @ 2015-01-25 18:09 fish7 阅读(103) 评论(0) 推荐(0)
摘要:题意:N个工兵营地。工兵营地里的人数分别为:a1,a2,....aNAdd i,j:第i个工兵营地里增加j人Sub i,j:第i个工兵营地里减少j人Query i,j:查询第i个第j个工兵营地共有多少人思路:线段树、树状数组都可以做,看代码代码:线段树:const int maxn = 50005;... 阅读全文
posted @ 2015-01-25 18:02 fish7 阅读(114) 评论(0) 推荐(0)
摘要:题意:刚开始有一个空集合。有三种操作:1.往集合中加入一个集合中不存在的数 x2.从集合中删除一个已经存在的数 x3.计算集合的digest sum并输出。 digest sum求法:将集合中所有数从小到大排序,得到a1>1; build(lson); build(rson);}void... 阅读全文
posted @ 2014-10-25 13:32 fish7 阅读(142) 评论(0) 推荐(0)