题目大意
在一个平面坐标系里,给你 n 个三角形,让你选出一条平行于 x 轴的线,能穿过最大数量的三角形。
废话不多说,直接上代码,自行理解。
#include<bits/stdc++.h> using namespace std; #define maxn 2000005 int n; int a[maxn]; int maxx(int a,int b,int c){ b=max(a,b); c=max(b,c); return c; } int minn(int a,int b,int c){ b=min(a,b); c=min(b,c); return c; } int main() { int temp=1000000; int x1,y1,x2,y2,x3,y3; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3); int maxy=maxx(y1,y2,y3),miny=minn(y1,y2,y3); a[miny+temp]++; //精髓1 a[maxy+temp+1]--; } int sum=0; for(int i=1;i<=2000000;i++){ //精髓2 a[i]=a[i]+a[i-1]; sum=max(sum,a[i]); } printf("%d ",sum); return 0; }