跟前面某个题一样,都是区间染色问题,还是用我的老方法,区间离散化+二分区间端点+区间处理做的,时间跑的还挺短
vc2R1c3RfZGM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />
坑爹的情况就是最左端是0,最右端是1e9,区间求的是开区间
#include#include #include #include using namespace std; typedef struct { int l; int r; bool color; }seg; seg a[5005]; int t[10005]; int d[10005],ct; int f[10005]; int find(int x,int n) { int l=0,r=n-1,mid=(l+r)/2; while(l d[mid])l=mid+1; else r=mid; mid=(l+r)/2; } return mid; } int main() { int n; scanf("%d",&n); for(int i=0;i max){ max=d[i]-left; a1=left; a2=d[i]; } left=d[i+1]; } } } printf("%d %d\n",a1,a2); return 0; }