Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:优先队列176k0ms1AIn Reply To:优先队列176k0ms Posted by:KatrineYang at 2016-09-23 07:13:24 > #include <iostream> > #include <stdio.h> > #include <algorithm> > #include <deque> > using namespace std; > > struct pt{ > int x,y; > }points[120]; > > int ptNum[120]; > int ptHeng[120]; > int ptList[120][120]; > > int n,r; > > bool compare(const pt &p1, const pt &p2){ > return p1.x<p2.x || (p1.x==p2.x && p1.y<p2.y); > } > > int main() { > int t; > scanf("%d", &t); > for(int ii = 0; ii < t; ii++){ > scanf("%d%d", &n, &r); > for(int j = 0; j < n; j++){ > scanf("%d%d", &points[j].x, &points[j].y); > } > sort(points, points+n, compare); > int hzb = -1; > int cnt = -1; > for(int i = 0; i < n; i++){ > if(points[i].x == hzb){ > ptList[cnt][ptNum[cnt]] = points[i].y; > ptNum[cnt]++; > } > else{ > hzb = points[i].x; > cnt++; > ptNum[cnt] = 1; > ptList[cnt][0] = points[i].y; > ptHeng[cnt] = hzb; > } > } > cnt++; > int ans = 0; > for(int i = 0; i < cnt; i++){ > int collect[120], tot = 0; > int startP = i; > while(startP < cnt && ptHeng[startP] <= ptHeng[i]+r){ > for(int j = 0; j < ptNum[startP]; j++){ > collect[tot] = ptList[startP][j]; > tot++; > } > startP++; > } > if(tot <= ans) continue; > sort(collect, collect+tot); > int gs = 0; > int mxGs = 0; > deque<int> fangye; > for(int j = 0; j < tot; j++){ > fangye.push_back(collect[j]); > gs++; > while(collect[j]-fangye.front() > r){ > fangye.pop_front(); > gs--; > } > if(gs > mxGs) mxGs = gs; > } > if(mxGs > ans) ans = mxGs; > } > printf("%d\n", ans); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator