BZOJ1071 [SCOI2007]组队
2014-10-05 18:58
344 查看
说好的一天一题解来啦~(其实是给马上要来的NOIP模拟赛加点RP>.<)
Vfk大神说是n^2乱搞,于是蒟蒻就开始乱搞,结果发现怎么搞都是O(n ^ 3)的。。。
后来请教了snake大神,他说先给sum = A * h + B * s排序,然后枚举h和s的最小值。(h -- Height, s -- Speed)
然后就是两个指针乱搞:
先枚举s最小值,然后一边枚举v的最小值一边查询符合条件的人数,因为这一定是相邻的一串。
View Code
Vfk大神说是n^2乱搞,于是蒟蒻就开始乱搞,结果发现怎么搞都是O(n ^ 3)的。。。
后来请教了snake大神,他说先给sum = A * h + B * s排序,然后枚举h和s的最小值。(h -- Height, s -- Speed)
然后就是两个指针乱搞:
先枚举s最小值,然后一边枚举v的最小值一边查询符合条件的人数,因为这一定是相邻的一串。
/************************************************************** Problem: 1071 User: rausen Language: C++ Result: Accepted Time:1708 ms Memory:1044 kb ****************************************************************/ #include <cstdio> #include <algorithm> using namespace std; struct data{ int s, h, sum; }x[10000], y[10000]; inline bool cmp1(const data &a, const data &b){ return a.h < b.h; } inline bool cmp2(const data &a, const data &b){ return a.sum < b.sum; } int n, Max, Min, l, r, cnt, ans; int A, B, C; inline bool check1(int p){ return y[p].s <= Max && y[p].s >= Min; } inline bool check2(int p){ return x[p].s <= Max && x[p].s >= Min; } int main(){ scanf("%d", &n); scanf("%d%d%d", &A, &B, &C); for (int i = 1; i <= n; ++i){ scanf("%d%d", &x[i].h, &x[i].s); x[i].sum = A * x[i].h + B * x[i].s; y[i] = x[i]; } sort(x + 1, x + n + 1, cmp1); sort(y + 1, y + n + 1, cmp2); for (int i = 1; i <= n; ++i){ Min = x[i].s, Max = Min + C / B; l = 0, r = 0, cnt = 0; for (int j = 1; j <= n; ++j){ while (r < n && y[r + 1].sum <= A * x[j].h + B * x[i].s + C) ++r, cnt += check1(r); while (l < n && x[l + 1].h < x[j].h) ++l, cnt -= check2(l); ans = max(ans, cnt); } } printf("%d\n", ans); return 0; }
View Code
相关文章推荐
- bzoj1071: [SCOI2007]组队
- 【BZOJ1071】【SCOI2007】组队 利用单调性的双指针
- BZOJ 1071: [SCOI2007]组队【单调性扫一遍
- 【bzoj1071】[SCOI2007]组队
- 1071: [SCOI2007]组队 - BZOJ
- bzoj 1071: [SCOI2007]组队 (单调性乱搞)
- [单调队列] BZOJ 1071 [SCOI2007]组队
- BZOJ 1071([SCOI2007]组队-双指针)
- bzoj1071[SCOI2007]组队
- [BZOJ1071][SCOI2007][堆]组队
- bzoj1071 [SCOI2007]组队
- BZOJ1071 [SCOI2007]组队
- bzoj1071: [SCOI2007]组队
- bzoj 1071: [SCOI2007]组队
- BZOJ 1071 [SCOI2007]组队
- bzoj 1071 [SCOI2007]组队 单调性
- 【SCOI2007】【BZOJ1071】组队
- bzoj1071 [SCOI2007]组队
- 【BZOJ1071】【SCOI2007】组队 利用单调性的双指针
- 【bzoj1071】[SCOI2007]组队