bzoj3663】的更多相关文章

题意 给出平面上N个点的坐标,和一个半径为R的圆心在原点的圆.对于两个点,它们之间有连边,当且仅当它们的连线与圆不相交.求此图的最大团. 点数<=2000,坐标的绝对值和半径<=5000. 注意这里的连线指的是直线而不是线段.保证所有点都在圆外(不会落在圆的边界上).保证任意两个点的连线不会与圆相切. 分析 半年前写过题解.bzoj3663&&bzoj4660 Crazy Rabbit 因为最近联考考了这道题,然后发现我当时的题解写得一塌糊涂...于是重写一遍,顺便给当时看过我…
题意:给定平面上一个圆和一堆圆外的点,要求选出尽可能多的点使得它们之间两两连线都不和圆相交.保证任意两点连线不和圆相切.点数<=2000 这题是很久以前在某张课件上看见的.看了题解还搞了三小时,联赛滚粗既视感. 有个结论我是直接看的课件:"点和点连线不与圆相交"对应"这两个点所对的圆上的极角序区间相交但不相互包含",并不会证,画画图好像是对的. 在直线上选择一些两两相交且不包含的区间[L1,R1],[L2,R2],[L3,R3]-.,按左端点排序之后,必然有L…
题目描述: 3663 4660 4206 题解: 第一眼:不成立的互相连边,然后用网络流求解无向图最小点覆盖! 好吧我不会. 正解: 每个点对应圆上的一段圆弧,长这样: 设对应圆弧$(l,r)$. 若$[a,b]$可以同时选中,那么$la<lb<ra<rb$(或者二者调换). 还有一点是,优弧=劣弧.这个自己手画一下应该会更清楚. 所以将$[a,b]$限制在$[-Pi,Pi]$内,问题转化为求最长的$la<lb<……<lk<ra<rb<……<rk…
几何+lis 很巧妙.直接做很困难,那么我们转化一下,把每个点能看见的圆弧画出来.只有这些圆弧相交时才满足条件. 那么也就是找出圆上尽量多两两相交的区间. 所以我们先按左端点极角排序,然后固定一个必须选的区间,找出所有和它相交的区间,按右端点做lis就行了. #include<bits/stdc++.h> using namespace std; ; ); struct data { double l, r; int id; } x[N], a[N]; int n, ans; double R…