51nod1563】的更多相关文章

题解: 其实只要排个序贪心一下就好了...代码600B不到... 代码: #include<bits/stdc++.h> using namespace std; ,INF=1e9; int n,x,w; struct node { int l,r; }a[N]; bool cmp(node a,node b) { if (a.r==b.r)return a.l<b.l; return a.r<b.r; } int main() { scanf("%d",&am…
题面 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 \(|xi−xj|≥wi+wj\) ,那么就给第i个点和第j个点之间连一条边. 问建好的图中最大团有几个点. \(1≤n≤200000\) 100 由\(|xi−xj|≥wi+wj\),我们知道可以把每个点,看做一条\([x_i-w_i,x_i+w_i]\)的线段. 那么就变成了找出最多条互不相交的线段. 那么就可以把线段按右端点排序后,贪心一波就好了. Code…