2013年7月21日

POJ - 3264 Balanced Lineup 线段树解RMQ

摘要: 这个题目是一个典型的RMQ问题,给定一个整数序列,1~N,然后进行Q次询问,每次给定两个整数A,B,(1 2 #include 3 #define INF 1000010 4 #define max(a,b) ((a)>(b)?(a):(b)) 5 #define min(a,b) ((a)>(b)?(b):(a)) 6 7 typedef struct res 8 { 9 int mx,mi;10 } pair;11 12 typedef struct node13 {14 struct node *lc,*rc;15 int ld,rd;16 pair r... 阅读全文

posted @ 2013-07-21 20:04 rootial 阅读(245) 评论(0) 推荐(0)

CF_91B

摘要: 题目意思是这样的:给定n个整数,求第i个数右边的距离它最远的比它小的数的下标之差然后再减1。这里既然是需要知道距离该数最远的下标,可以从右至左扫描一遍,然后按照单调递减的顺序入栈,即只把比栈顶元素小的整数入栈,等于或大于对于后面的数查找比自己小的值没什么意义。然后遇到比栈顶元素大,而又比不大于栈底元素的情况二分搜索就可以了。 1 #include 2 #define N 100010 3 int a[N],ans[N],stack[N]; 4 int main(void) 5 { 6 int n,i,top=0; 7 scanf("%d",&n); 8 for(i= 阅读全文

posted @ 2013-07-21 10:47 rootial 阅读(286) 评论(0) 推荐(0)

导航