日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P2521 [HAOI2011]防线修建

發(fā)布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P2521 [HAOI2011]防线修建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

傳送門

一眼看出可以倒著做轉為加點維護凸包,然后……然后我就不會了……

看了一眼題解,大概是這樣的,我們先把所有點都讀進來,然后按極角排序,也就是說定義點的大小為他們極角的大小(本題里實際上直接按x坐標和y坐標排序也沒事,代碼里就這樣寫的)

那么我們可以把所有凸包上的點都給扔進一個set里,每次插入一個點的時候找到它的前驅和后繼,然后用叉積計算它到那兩個點的夾角是凹的還是凸的,如果是凸的那么這個點就要加入凸包。然后再往兩邊繼續(xù)搜,把所有不應該在凸包里的點給刪掉

因為每個點只會被刪一次,所以插入是均攤\(O(logn)\)

然后就是調代碼的時候一些比較玄學的事情……一直WA然后調了半天……最后發(fā)現(xiàn)幾個變量定義的順序換了一下就可以了?這有什么不對的么我不是很明白誒?

算了……這一個小時就當在劃水好了……

//minamoto #include<bits/stdc++.h> #define IT set<node>::iterator #define fp(i,a,b) for(register int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(register int i=a,I=b-1;i>I;--i) using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) char buf[1<<21],*p1=buf,*p2=buf; int read(){int res,f=1;char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f; } const int N=5e5+5; struct node{int x,y;node(int X=0,int Y=0):x(X),y(Y){} }p[N];set<node>A; int n,x,y,m,q,tot;bool vis[N];double now; struct qqq{int op,i;}op[N];double ans[N]; inline node operator -(node a,node b){return node(a.x-b.x,a.y-b.y);} inline double operator *(node a,node b){return a.x*b.y-b.x*a.y;} inline bool operator <(node a,node b){return a.x==b.x?a.y>b.y:a.x<b.x;} inline double dis(node a,node b){return sqrt((double)(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));} void ins(node x){IT r=A.lower_bound(x),l=r,t;--l;if((*l-x)*(*r-x)<0)return;now-=dis(*l,*r);while(r!=A.end()){t=r,++r;if((*r-x)*(*t-x)>0)break;now-=dis(*t,*r),A.erase(t);}while(l!=A.begin()){t=l,--l;if((*t-x)*(*l-x)>0)break;now-=dis(*t,*l),A.erase(t);}A.insert(x),l=r=t=A.find(x),--l,++r;now+=dis(*l,x)+dis(*r,x); } int main(){ // freopen("testdata.in","r",stdin);n=read(),x=read(),y=read(),m=read();fp(i,1,m)p[i].x=read(),p[i].y=read();q=read();fp(i,1,q){op[i].op=read();if(op[i].op==1)op[i].i=read(),vis[op[i].i]=true;}now+=dis(node(0,0),node(x,y)),now+=dis(node(x,y),node(n,0));A.insert(node(0,0)),A.insert(node(n,0)),A.insert(node(x,y));fp(i,1,m)if(!vis[i])ins(p[i]);fd(i,q,1)if(op[i].op==1)ins(p[op[i].i]);else ans[++tot]=now;fd(i,tot,1)printf("%.2lf\n",ans[i]);return 0; }

轉載于:https://www.cnblogs.com/bztMinamoto/p/10009281.html

總結

以上是生活随笔為你收集整理的P2521 [HAOI2011]防线修建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品wwww | 国产一区,二区 | 国产一级二级在线观看 | 都市激情一区 | 伊人网影院 | 国产精品综合一区二区 | 国产精品久久久久久久av | 插插久久 | 国产精品久久久久久网站 | 国产午夜视频在线观看 | 日韩高清在线观看一区 | 中日韩黄色大片 | 六月丁香激情网 | av综合网站| 精品国产91乱码一区二区三区 | 无码国产精品一区二区免费16 | 伊人久久国产精品 | 亚洲女同二女同志 | 国产精彩视频一区 | chinese xxxx videos andvr | 日本少妇中出 | 玉女心经是什么意思 | 国产h在线观看 | 亚洲欧美精品一区二区 | 欧美日韩一区免费 | 国产精品久久久久久久久久免费 | 蜜桃色999 | 欧美精品 日韩 | 调教在线观看 | 久久草视频在线 | 黑森林av| 日韩大尺度在线观看 | 亚洲 在线 | 亚洲一区二区电影网 | 天堂在线视频tv | 亚洲天堂手机在线观看 | 一区二区三区四区欧美 | 91手机视频 | 国产精品99久久久精品无码 | 18岁禁黄网站 | 久久99久久99| 国内外成人激情视频 | 成人影片在线免费观看 | 99久久久久无码国产精品 | 经典一区二区 | 黄色av网站在线 | 日韩一级在线观看视频 | 午夜寻花 | 精品成人av一区二区在线播放 | 91国产一区二区 | 亚洲高清久久久 | 主播福利在线 | 激情久久网站 | 合欢视频在线观看 | 亚洲欧美一区二区三区在线 | 黄色美女片 | 成人综合一区二区 | 国产精品久久久影院 | 小镇姑娘高清播放视频 | 国产女主播一区 | 日本不卡二区 | 日本少妇网站 | 亚洲最大成人网站 | 91综合视频 | 黄色资源网| 日韩毛片高清在线播放 | 亚洲乱码国产乱码精品精 | 日韩在线看片 | 高清国产在线 | 91美女视频在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 日韩经典一区二区 | 久久精品国产清自在天天线 | 国产伦精品一区二区三 | 影音先锋激情在线 | www色天使 | 三级伦理片 | 国产黄色在线 | √天堂8资源中文在线 | 国产成人精品无码免费看在线 | 在线免费观看高清视频 | 少妇一晚三次一区二区三区 | 麻豆资源 | 亚洲自偷自偷偷色无码中文 | 亚洲天堂三级 | 国产睡熟迷奷系列精品视频 | 国产精品无码专区av在线播放 | 成人h视频在线观看 | 香蕉网在线 | 天天看片天天爽 | 少妇色综合| 色婷婷久久久亚洲一区二区三区 | 亚洲精品久久久 | 西野翔夫の目の前で犯在线 | 伦理黄色片 | 国产精品三级久久久久久电影 | 土耳其xxxx性hd极品 | 欧美精品久久久久久久免费 | www黄色片网站 |