标签:text sum ica ++ cas struct min ros where
题目链接:
http://poj.org/problem?id=2398
题目描述:
Description
Input
Output
Sample Input
4 10 0 10 100 0 20 20 80 80 60 60 40 40 5 10 15 10 95 10 25 10 65 10 75 10 35 10 45 10 55 10 85 10 5 6 0 10 60 0 4 3 15 30 3 1 6 8 10 10 2 1 2 8 1 5 5 5 40 10 7 9 0
Sample Output
Box 2: 5 Box 1: 4 2: 1
题目大意:
同POJ2318 TOYS,只不过输出变成了,求有t个玩具的区间个数
思路:
除了中间需要排个序之外,同POJ2318 TOYS
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <vector> 6 #include <cmath> 7 #include <utility> 8 using namespace std; 9 10 typedef pair<int, int> pii; 11 12 const int N = 1010; 13 14 struct Point { 15 double x, y; 16 Point(double x = 0, double y = 0) :x(x), y(y) {} 17 }; //点的定义 18 19 typedef Point Vector; //向量的定义 20 21 Vector operator - (Vector& A, Vector& B) { return Vector(A.x - B.x, A.y - B.y); } //向量减法 22 23 double Cross(Vector& A, Vector& B) { return A.x*B.y - A.y*B.x; } //向量叉乘 24 25 int cnt[N], X1, Y1, X2, Y2, n, m, ans[N]; 26 pii P[N]; 27 Vector ve[N]; 28 29 int calc(Point& p, int l, int r) { //二分 30 if (l == r)return l; 31 int mid = (l + r) >> 1; 32 Vector tmp(p.x - P[mid].second, p.y - Y2); 33 if (Cross(tmp, ve[mid]) < 0)return calc(p, l, mid); 34 else return calc(p, mid + 1, r); 35 } 36 37 int main() { 38 while (cin >> n&&n) { 39 memset(cnt, 0, sizeof(cnt)); 40 memset(ans, 0, sizeof(ans)); 41 scanf("%d%d%d%d%d", &m, &X1, &Y1, &X2, &Y2); 42 ve[n].x = 0, ve[n].y = Y1 - Y2; 43 P[n].first = X2, P[n].second = X2; 44 int dy = Y1 - Y2; 45 for (int i = 0; i < n; ++i) 46 scanf("%d%d", &P[i].first, &P[i].second); 47 sort(P, P + n + 1); //排序 48 for (int i = 0; i <= n; ++i) 49 ve[i].x = P[i].first - P[i].second, ve[i].y = dy; 50 Point tmp; 51 for (int i = 0; i < m; ++i) { 52 scanf("%lf%lf", &tmp.x, &tmp.y); 53 ++cnt[calc(tmp, 0, n)]; 54 } 55 for (int i = 0; i <= n; ++i) 56 ++ans[cnt[i]]; 57 printf("Box\n"); 58 for (int i = 1; i <= n; ++i)if (ans[i]) 59 printf("%d: %d\n", i, ans[i]); 60 } 61 }
POJ2398 Toy Storage(点与凸多边形位置关系)
标签:text sum ica ++ cas struct min ros where
原文地址:http://www.cnblogs.com/hyp1231/p/6985888.html