先对a排序,a相等的话就对b排序: 维护一个栈,每次取栈的头两个,和当前的直线相比较: 如果当前的直线把头第一个屏蔽,就将他出栈,一直到不能屏蔽为止: 代码: #include<cstdio> #include<cstring> #include<algorithm> #define maxn 500005 using namespace std; int st[maxn],top; int num[maxn]; struct line { int a,b; int i…
按斜率排序后画个图,用单调栈维护这个半平面交 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(50010), INF(2147483647); IL ll Read(){ RG char c = getchar();…