当前位置: 首页 > news >正文

网站建设厃金手指谷哥十四sem代运营托管公司

网站建设厃金手指谷哥十四,sem代运营托管公司,b2b2c平台网站建设,网站建设广告图片最后一道数据结构,不能再多了。 而且需要一点计算几何的知识,有点难搞。 分为两个部分求解。 首先考虑找到距离 ≤ r \le r ≤r的交点数量。发现这等价于圆上两段圆弧相交,因此将圆上的点离散化后排序,用一个主席树来求就做完了…

最后一道数据结构,不能再多了。

而且需要一点计算几何的知识,有点难搞。

分为两个部分求解。

首先考虑找到距离 ≤ r \le r r的交点数量。发现这等价于圆上两段圆弧相交,因此将圆上的点离散化后排序,用一个主席树来求就做完了。

然后是距离求和。这看起来非常棘手。事实上,只要把所有交点都找出来就做完了。首先可以放心的将圆环从一个位置断开。其次,考虑以某种顺序将所有直线依次删掉。发现当按照长度从大到小删时,假设这条线段是 [ l i , r i ] [l_i,r_i] [li,ri],发现只要满足 l j ∈ [ l i , r i ] l_j\in [l_i,r_i] lj[li,ri]或者 r j ∈ [ l i , r i ] r_j\in [l_i,r_i] rj[li,ri],那么直线 i , j i,j i,j一定相交。那么前面一个问题也得到了解决,只需用树状树组维护就做完了。

当然,事实上我们可以 O ( 1 ) O(1) O(1)求出一个交点。考虑倒着做,每次删除一条线段,用链表维护就做完了。事实上交点在圆上的情况并不影响答案,所以可以少一些细节。

那么问题来了,为啥我被卡常了。

#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define inf 0x3f3f3f3f
#define db double
#define cpx complex<db>
using namespace std;
const int N=1e5+5;
struct seg{db k,b;
}seg[N];
struct point{db x,y;
}p;
int n,m,cntseg,cnt;
int bit[N],sa[N],pos[N];
int le[N],ri[N],L[N],R[N];//链表
db res;
pair<db,int>A[N];
bool cmp(int x,int y){return R[x]-L[x]<R[y]-L[y];
}
ll ask(int x){ll tot=0;for(;x;x-=x&-x)tot+=bit[x];return tot;
}
void add(int x,int y){for(;x<=cnt;x+=x&-x)bit[x]+=y;
}
db getdist(point x,point y){return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y));
}
point calc(int x,int y){x=pos[x],y=pos[y];db tx=(seg[y].b-seg[x].b)/(seg[x].k-seg[y].k),ty=seg[x].k*tx+seg[x].b;return {tx,ty};
}
void del(int x){if(le[x])ri[le[x]]=ri[x];if(ri[x])le[ri[x]]=le[x];
}
ll check(db mid){ll res=0;cntseg=cnt=0;for(int i=1;i<=n;i++){db dist=abs(seg[i].k*p.x-p.y+seg[i].b)/sqrt(seg[i].k*seg[i].k+1);if(dist<=mid){db a=seg[i].k*seg[i].k+1,b=2*seg[i].k*(seg[i].b-p.y)-2*p.x,c=p.x*p.x+(seg[i].b-p.y)*(seg[i].b-p.y)-mid*mid;db delta=b*b-4*a*c;db lx=(-b-sqrt(delta))/(2*a),ly=seg[i].k*lx+seg[i].b;db rx=(-b+sqrt(delta))/(2*a),ry=seg[i].k*rx+seg[i].b;cntseg++;L[cntseg]=R[cntseg]=0;//fixedpos[cntseg]=i;A[++cnt]={atan2(ry-p.y,rx-p.x),cntseg};A[++cnt]={atan2(ly-p.y,lx-p.x),cntseg};}}sort(A+1,A+1+cnt);for(int i=1;i<=cnt;i++){if(!L[A[i].se])L[A[i].se]=i;else R[A[i].se]=i;}for(int i=1;i<=cntseg;i++){sa[i]=i;}sort(sa+1,sa+1+cntseg,cmp);for(int i=1;i<=cnt;i++)le[i]=i-1,ri[i]=i+1;ri[cnt]=0;for(int i=1;i<=cnt;i++)add(i,1);for(int i=1;i<=cntseg;i++){int x=sa[i];res+=ask(R[x]-1)-ask(L[x]);add(L[x],-1),add(R[x],-1);del(L[x]),del(R[x]);}return res;
}
db getans(db mid){ll res=0;db tot=0;cntseg=cnt=0;for(int i=1;i<=n;i++){db dist=abs(seg[i].k*p.x-p.y+seg[i].b)/sqrt(seg[i].k*seg[i].k+1);if(dist<=mid){db a=seg[i].k*seg[i].k+1,b=2*seg[i].k*(seg[i].b-p.y)-2*p.x,c=p.x*p.x+(seg[i].b-p.y)*(seg[i].b-p.y)-mid*mid;db delta=b*b-4*a*c;db lx=(-b-sqrt(delta))/(2*a),ly=seg[i].k*lx+seg[i].b;db rx=(-b+sqrt(delta))/(2*a),ry=seg[i].k*rx+seg[i].b;cntseg++;L[cntseg]=R[cntseg]=0;//fixedpos[cntseg]=i;A[++cnt]={atan2(ry-p.y,rx-p.x),cntseg};A[++cnt]={atan2(ly-p.y,lx-p.x),cntseg};}}sort(A+1,A+1+cnt);for(int i=1;i<=cnt;i++){if(!L[A[i].se])L[A[i].se]=i;else R[A[i].se]=i;}for(int i=1;i<=cntseg;i++)sa[i]=i;sort(sa+1,sa+1+cntseg,cmp);for(int i=1;i<=cnt;i++)le[i]=i-1,ri[i]=i+1;ri[cnt]=0;for(int i=1;i<=cnt;i++)add(i,1);for(int i=1;i<=cntseg;i++){int x=sa[i];for(int j=ri[L[x]];j!=R[x];j=ri[j]){point tmp=calc(x,A[j].se);res++;tot+=getdist(p,tmp);}add(L[x],-1),add(R[x],-1);del(L[x]),del(R[x]);}return tot+(m-res)*mid;
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>p.x>>p.y>>m;p.x/=1000,p.y/=1000;//fixedfor(int i=1;i<=n;i++){cin>>seg[i].k>>seg[i].b;seg[i].k/=1000,seg[i].b/=1000;}db l=0,r=4e9;for(int i=1;i<=100;i++){db mid=(l+r)/2;if(check(mid)<=m)l=mid;else r=mid;}//fixedcout.precision(20);cout<<getans(l);
}
http://www.shuangfujiaoyu.com/news/37697.html

相关文章:

  • 客户细分精准营销重庆百度关键词优化软件
  • 上海网站建设沪icp备百度电商平台
  • 成都建站网站全网线报 实时更新
  • 购物网站如何做性能测试广州seo关键词优化是什么
  • 云南省交通投资建设集团有限公司网站2022最新免费的推广引流软件
  • 163建筑网站windows优化大师提供的
  • 代理注册公司行情关键词排名优化是什么意思
  • 洛阳做网站找哪家好杭州专业seo服务公司
  • 做超市海报的网站站长seo工具
  • 武汉交通建设网站建设公司网站大概需要多少钱?
  • 惠州网站建设系统网页设计软件dreamweaver
  • 手机网站 input合肥网络关键词排名
  • 网站页面设计服务全网营销系统怎么样
  • 深圳南山企业网站建设大丰seo排名
  • 南京市城市建设档案馆网站google store
  • 做网站哪些网络公司好杭州seo网
  • 腾冲做兼职的网站南京网站推广公司
  • 一般网站做推广要多大的带宽和内存网上销售推广方案
  • wordpress 漏洞优化大师的优化项目有哪7个
  • 网站开发培训收费b站暴躁姐
  • 重庆公司公章查询优化品牌seo关键词
  • 做吉祥物的网站企业网站建设方案策划
  • 网站建设需要做的事情自己可以做网站吗
  • 网站布局方案seo整站优化吧
  • 叙述网站的建设意义所在黑马it培训班出来现状
  • 佛冈网站建设在线外链发布工具
  • 深圳做模板网站的公司关键词优化的发展趋势
  • 成都网站建设好多钱全网营销一站式推广
  • 提供做pc端网站网站维护需要学什么
  • 做兼职拍照片传网站太原整站优化排名外包