三倍经验——bzoj3663、4660、4206 Crazy Rabbit/最大团
题目描述:
题解:
第一眼:不成立的互相连边,然后用网络流求解无向图最小点覆盖!
好吧我不会。
正解:
每个点对应圆上的一段圆弧,长这样:
设对应圆弧$(l,r)$。
若$[a,b]$可以同时选中,那么$la<lb<ra<rb$(或者二者调换)。
还有一点是,优弧=劣弧。这个自己手画一下应该会更清楚。
所以将$[a,b]$限制在$[-Pi,Pi]$内,问题转化为求最长的$la<lb<……<lk<ra<rb<……<rk$。
先按$l$排序,枚举$a$,把合法的$rb……rk$都扔到数组里,最后跑一遍最长上升子序列。
时间复杂度$O(n^2logn)$
代码:
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = ;
const double Pi = acos(-1.0);
const double eps = 1e-;
int dcmp(double x)
{
if(fabs(x)<=eps)return ;
return x>?:-;
}
template<typename T>
inline void read(T&x)
{
T f = ,c = ;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
x = f*c;
}
int n,x[N],y[N],tl,ans,t;
struct node
{
double x,y;
node(){}
node(double x,double y):x(x),y(y){}
bool operator < (const node&a)const{return dcmp(x-a.x)?dcmp(x-a.x)<:dcmp(y-a.y)<;}
}p[N];
double r,sta[N],s[N];
void fix(double x)
{
int l = ,r = t,k = t;
while(l<=r)
{
int mid = (l+r)>>;
if(s[mid]>x)k=mid,r=mid-;
else l=mid+;
}
s[k] = x;
}
void LIS()
{
t = ;
for(int i=;i<=tl;i++)
if(!t||sta[i]>s[t])s[++t]=sta[i];
else fix(sta[i]);
ans = max(ans,t);
}
int main()
{
// freopen("crazy.in", "r", stdin);
// freopen("crazy.out", "w", stdout);
// freopen("tt.in","r",stdin);
read(n),read(r);
for(int i=;i<=n;i++)
{
read(x[i]),read(y[i]);
double bas = atan2(y[i],x[i]);
double dlt = acos(r/sqrt(x[i]*x[i]+y[i]*y[i]));
p[i].x = bas-dlt,p[i].y = bas+dlt;
if(p[i].x<-Pi)p[i].x+=*Pi;
if(p[i].y>Pi)p[i].y-=*Pi;
if(p[i].x>p[i].y)swap(p[i].x,p[i].y);
}
sort(p+,p++n);
for(int i=;i<=n;i++)
{
tl=;
for(int j=i+;j<=n&&p[j].x<=p[i].y;j++)
if(p[j].y>p[i].y)sta[++tl]=p[j].y;
LIS();
}
printf("%d\n",ans+);
return ;
}
三倍经验——bzoj3663、4660、4206 Crazy Rabbit/最大团的更多相关文章
- 【BZOJ4660】Crazy Rabbit 结论+DP
[BZOJ4660]Crazy Rabbit Description 兔子们决定在自己的城堡里安排一些士兵进行防守.给出 n 个点的坐标,和城堡里一个圆心在原点的圆形的障碍,兔子们希望从中选出 k 个 ...
- bzoj 4660 Crazy Rabbit——LIS解决“相交”限制的思想
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4660 想到一个点可以用它与圆的两个切点表示.并想到可以把切点极角排序,那么就变成环上的一些区 ...
- Bzoj3663/4660 CrazyRabbit
题意:给定平面上一个圆和一堆圆外的点,要求选出尽可能多的点使得它们之间两两连线都不和圆相交.保证任意两点连线不和圆相切.点数<=2000 这题是很久以前在某张课件上看见的.看了题解还搞了三小时, ...
- P3897 [湖南集训]Crazy Rabbit
\(\color{#0066ff}{ 题目描述 }\) 兔子们决定在自己的城堡里安排一些士兵进行防守. 给出 n 个点的坐标,和城堡里一个圆心在原点的圆形的障碍,兔子们希望从中选出 k 个兔子,使得它 ...
- bzoj3663/4660CrazyRabbit && bzoj4206最大团
题意 给出平面上N个点的坐标,和一个半径为R的圆心在原点的圆.对于两个点,它们之间有连边,当且仅当它们的连线与圆不相交.求此图的最大团. 点数<=2000,坐标的绝对值和半径<=5000. ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- CSS3_动画 animation
在项目中,颜色,图片,等等数据都保存在数组中 动画 使元素从一种样式逐渐变化到另一种样式的 animation: name ; 无顺序要求,但是必须先写 持续时间 ,再写 延迟时间 原理 人眼在看 ...
- BZOJ 4206: 最大团
4206: 最大团 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 91 Solved: 36[Submit][Status][Discuss] De ...
- bzoj 4206 最大团 几何+lis
最大团 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 142 Solved: 65[Submit][Status][Discuss] Descrip ...
随机推荐
- Hexo - 记录一次Pages服务部署失败的原因
问题与分析 某天忽然发现,一直运行得好好的Pages服务部署失败了,GitHub Pages报错如下: Your site is having problems building: The tag c ...
- CF438D The Child and Sequence 线段树
给定数列,区间查询和,区间取模,单点修改. n,m小于10^5 ...当区间最值小于模数时,就直接返回就好啦~ #include<cstdio> #include<iostream& ...
- BZOJ 4236: JOIOJI map瞎搞
分别记录J,O,I,的个数 cnt[char][i] 表示处理到第i位,char的个数 显然当且仅当 cnt[J][i] - cnt[O][i] == cnt[J][j-1] - cnt[O][j-1 ...
- Http请求数据解释
请求的数据里面包含三个部分内容 : 请求行 . 请求头 .请求体 请求行 POST /examples/servlets/servlet/RequestParamExample HTTP/1.1 PO ...
- 服务器配置,负载均衡时需配置MachineKey
服务器配置,负载均衡时需配置MachineKey https://blog.csdn.net/liuqiao0327/article/details/54018922 Asp.Net应用程序中为什么要 ...
- MVC下载文件方式 包括网络地址文件
MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName){ string absol ...
- linux文件系统和目录树的关系
文件系统是和底层的硬件系统紧密关联的,文件系统相当于是dev(设备或硬件)在Linux上面的显示,如/dev/hdc2 而目录树是逻辑的概念,其可以通过挂载的方式连接文件系统,先用df查看本地的文件系 ...
- vuejs 学习旅程一
来上海快一年了,一直在东钿金融工作着,这一年来主要负责公司前期的房产评估微信平台,公司IT部也是刚刚成立,成立IT部门不仅仅只是维护房产评估微信,而是要做一个互金理财平台.于是我一年来的主要工作是负责 ...
- 利用bintray-release插件上传到Bintray- HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]问题解决
凡是网上教程 有个5678步的总有这样或者那样的坑. 上周撸了一个小工具准备上传到jcenter,方便管理以及以后使用.看了一下教程,短短几步,弄了很久. 按Hongyang的教程http://www ...
- C#字段声明部分如何调用该类中的方法进行初始化?
问题描述: 有时,功能需求,需要在初始化字段时,需要视不同情况赋予不同字段值. 解决办法: 将方法设为static即可. e.g. public string str = SetStr(); publ ...