摘要: 题意:FJ有n头牛(编号为1~n),每一头牛都有一个测验值[S, E],如果对于牛i和牛j来说,它们的测验值满足下面的条件则证明牛i比牛j强壮:Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj。现在已知每一头牛的测验值,要求输出每头牛有几头牛比其强壮。分析:将[s,e]看成是而为坐标轴的横纵坐标,画出各个点,我们发现答案就是每个点左上的点的个数。将e降序,再将s升序,就可以转化成一维。例如:1 21 20 33 4,排序后为3 40 31 21 2,这样就转化成横坐标前面小于它的个数。这个题离散到大于等于1的范围内即可。难点是,对重复坐标 阅读全文
posted @ 2012-08-19 11:11 pushing my way 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 这个题的第二个版本:同2299_II,也是压缩到1--n范围内,找出已知序列的相对顺序,然后构建树状数组。这里也需要一个辅助的数组。代码:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <memory.h> 4 #include <algorithm> 5 using namespace std; 6 //516k 188ms 7 const int maxnum=15001; 8 struct node 9 {10 int digit;11 int number;1 阅读全文
posted @ 2012-08-19 10:39 pushing my way 阅读(179) 评论(0) 推荐(0) 编辑