随笔分类 - 线段树
摘要:Problem DescriptionIn the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.Now Pudge wants to do some operations on the hook.Let us number the consecutive metallic stick
阅读全文
摘要:Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问:“Tidy,马上汇报第3个营地到第10个营地共有多少人!”Tidy就要马上开始计算
阅读全文
摘要:Problem DescriptionN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a typedef struct{ int l,r; int count;//记录这段线段的数目}point;point tree[300001];int ans;void build(int v,int l,int r)//建树{ tree[v].l=l; tree[v].r=r; tree[v].count=0; if(l==r) return ; int mid=(l+r)/2; build(2*v,l,mid); ...
阅读全文
摘要:Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0#define max 200001typedef struct{//树的结点 int l; //左端点 int r; //右端点 int m; //记录l~r之间的,最大数。}point;point ...
阅读全文
摘要:题意描述:给你一个有0--n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,那么这样就形成了n个序列,那么每个序列都有一个逆序数,找出其中最小的一个输出!这题用暴力可以过,时间是125ms,最好的方法是用线段树,大概是50+ms不过思想是一样的,首先统计初始的逆序数,因为题目总是将第一个数已到最后,所以原来比它小的数就不是逆序了,而原来比它大成为了逆序,显然在序列0,1,2,3....n-1中比a[i]小的数的个数为a[i]比a[i]大的数的个数为n-a[i]+1每次移动之后的逆序数sum就变为了sum=sum-a[i]+n-a[i]-1;把a[1],a
阅读全文