随笔分类 - 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){...
阅读全文
摘要:题意: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上一次的位...
阅读全文
摘要:题意:①首先定义S为一个有序序列,S={ A1 , A2 , A3 , ... , An },n为元素个数 ; ②然后定义Sub为S中取出的一个子序列,Sub={ Ai1 , Ai2 , Ai3 , ... , Aim },m为元素个数 ; ③其中Sub满足 Ai1 d (1 >1; b...
阅读全文
摘要:题意:三种操作: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...
阅读全文
摘要:题意:h*w的白板。有n个广告牌,每个广告牌是1*wi。必须放置在白板的upmost中的leftmost。输出n个广告牌放置在第几行。如果放不下,输出-1。数据规格:h, w, and n (1 > 1; build(lson); build(rson);}int query(int x...
阅读全文
摘要:题意:给你N个数,N个数是0~N-1的一个全排列。要求统计它的所有形式的逆序对的最小值。它的所有形式的意思是,不断将数组开头的第一个数放到数组的最后面。逆序对:iaj思路:树状数组也可以,,看代码代码:const int maxn = 50005;int sum[maxn> 1; build(...
阅读全文
摘要:题意: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);}...
阅读全文
摘要:题意:N个工兵营地。工兵营地里的人数分别为:a1,a2,....aNAdd i,j:第i个工兵营地里增加j人Sub i,j:第i个工兵营地里减少j人Query i,j:查询第i个第j个工兵营地共有多少人思路:线段树、树状数组都可以做,看代码代码:线段树:const int maxn = 50005;...
阅读全文
摘要:题意:刚开始有一个空集合。有三种操作:1.往集合中加入一个集合中不存在的数 x2.从集合中删除一个已经存在的数 x3.计算集合的digest sum并输出。 digest sum求法:将集合中所有数从小到大排序,得到a1>1; build(lson); build(rson);}void...
阅读全文
浙公网安备 33010602011771号