亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

【JZOJ3297】【SDOI2013】逃考(escape)

2019-11-06 06:05:21
字體:
來源:轉載
供稿:網友

Mission

高考又來了,對于不認真讀書的來講真不是個好消息。為了小楊能在家里認真讀書,他的親戚決定駐扎在他的家里監督他學習,有爺爺奶奶、外公外婆、大舅、大嫂、阿姨…… 小楊實在是忍無可忍了,這種生活跟監獄有什么區別!為了他親愛的小紅,為了他的dota,他決定越獄! 假設小楊的家是個n*m 的矩陣,左下角坐標為(0,0),右上角坐標為(x1,y1)。小楊有n 個親戚,駐扎在矩陣里(位置不同,且不在矩陣的邊上)。小楊家里的每個地方都被親戚監控著,而且只被距離最近的親戚監控: 也就是說假設小楊所在的位置是(3,3),親戚A 在(3,0),A 距離小楊距離是3;親戚B 在(6,7),則B 距離小楊距離是5。距離A < 距離B,所以(3,3)位置由A 監控。 如果“最近距離”出現同時有幾個親戚,那么那個位置同時被那幾個親戚監控。 給出小楊的坐標(x0,y0)。因為被發現的人數越少,越獄成功的機會越大,所以小楊需要你設計一條越獄路線到達矩形的邊上,且被發現的人數最少。 Ps:小楊做的方向是任意的,也就是說路線上的任意位置只需要是實數。 保證一開始小楊只被一個親戚監控著。 n<=600

Solution

顯然,每個點與其他點連線的中垂線形成的半平面求交,就是這個點的監視范圍。 然后最短路即可。

Code

#include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<string.h>#define ll long long#define db double using namespace std;const char* fin="ex3297.in";const char* fout="ex3297.out";const db eps=10e-10;const int inf=0x7fffffff;const int maxn=607,maxm=maxn*maxn;bool equ(db v,db x){return fabs(v-x)<=eps;}int sgn(db x){return equ(x,0.0)?0:(x<0?-1:1);}struct P{ db x,y; P(db _x=0,db _y=0){x=_x;y=_y;} P Operator +(P b){return P(x+b.x,y+b.y);} P operator -(P b){return P(x-b.x,y-b.y);} P operator *(db b){return P(x*b,y*b);} P per(){return P(y,-x);} db operator ^(P b){return x*b.y-y*b.x;} db arg(){return atan2(y,x);} void read(){scanf("%lf",&x);scanf("%lf",&y);}}a[maxn];struct L{ P p,v; int id; L(){} L(P _p,P _v,int _id=0){p=_p;v=_v;id=_id;} db arg(){return v.arg();} P operator &(L b){return b.p+b.v*((v^(p-b.p))/(v^b.v));}}b[maxn],c[maxn];int num;bool cmp(L a,L b){return a.arg()<b.arg();}bool in(P p,L l){return sgn((p-l.p)^l.v)>=0;}P mid(P a,P b){return P((a.x+b.x)/2.0,(a.y+b.y)/2.0);}int n,t,i,j,k,X,Y,sx,sy,st,tot,head,tail;int fi[maxn],ne[maxm],la[maxm],va[maxm];int B[maxn*10],dis[maxn];bool bz[maxn];void add_line(int a,int b,int c){ tot++; ne[tot]=fi[a]; la[tot]=b; va[tot]=c; fi[a]=tot;}void add(int v,int u){ if (dis[v]>u){ dis[v]=u; if (!bz[v]){ B[++tail]=v; bz[v]=true; } }}void spfa(int v){ int i,j,k; memset(dis,127,sizeof(dis)); head=tail=0; add(v,0); while (head++<tail){ for (k=fi[B[head]];k;k=ne[k]) add(la[k],dis[B[head]]+va[k]); bz[B[head]]=false; }}int main(){ scanf("%d",&t); while (t--){ scanf("%d",&n); scanf("%d%d%d%d",&X,&Y,&sx,&sy); tot=0; st=0; P stp(sx,sy); memset(fi,0,sizeof(fi)); for (i=1;i<=n;i++) a[i].read(); for (i=1;i<=n;i++){ num=0; for (j=1;j<=n;j++){ if (i==j) continue; b[++num]=L(mid(a[i],a[j]),(a[j]-a[i]).per(),j); } b[++num]=L(P(0,0),P(0,1),0); b[++num]=L(P(0,Y),P(1,0),0); b[++num]=L(P(X,Y),P(0,-1),0); b[++num]=L(P(X,0),P(-1,0),0); sort(b+1,b+num+1,cmp); int N=0; for (j=1;j<=num;j++){ if (!N) b[++N]=b[j]; else if (!equ(b[N].arg(),b[j].arg())) b[++N]=b[j]; else if (in(b[j].p,b[N])) b[N]=b[j]; } num=N; int head=1,tail=2; bool noans=false; c[1]=b[1],c[2]=b[2]; for (j=3;j<=num;j++){ while (head<tail && !in(c[tail]&c[tail-1],b[j])) tail--; while (head<tail && !in(c[head]&c[head+1],b[j])) head++; if (head==tail && sgn(c[head].v^b[j].v)<=0){noans=true;break;} c[++tail]=b[j]; } if (noans) continue; while (head<tail && !in(c[tail]&c[tail-1],c[head])) tail--; for (j=head;j<=tail;j++) add_line(i,c[j].id,1); if (!st){ bool ST=true; for (j=head;j<=tail;j++) if (!in(stp,c[j])){ ST=false; break; } if (ST) st=i; } } spfa(st); Warning

1.半平面交的流程 1)加入半平面以及四個特殊的邊界半平面; 2)按半平面的極角排序,極角相同的半平面取較內側的一個; 3)利用雙端隊列求出半平面交,頭尾都要檢查交點是否在新加入的半平面內; 注意:判斷無解(隊列中只剩一個半平面) 4)隊列尾交點是否在頭半平面中


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美日韩精品免费视频| 国产精品成熟老女人| 777国产偷窥盗摄精品视频| 日韩a**站在线观看| 国产91色在线免费| 国产精品久久久久久久久久久久久| 日韩亚洲欧美成人| 国产精品网站大全| 欧美精品在线网站| 国产欧美va欧美va香蕉在线| 欧美巨大黑人极品精男| 欧美—级高清免费播放| 午夜精品久久久久久久99热| 久久久免费电影| 久久av红桃一区二区小说| 国产亚洲人成a一在线v站| 久久久久久久国产精品视频| 久久免费视频在线观看| 亚洲女人天堂成人av在线| 国产亚洲欧美日韩一区二区| 久久久久女教师免费一区| 欧美日韩视频在线| 色婷婷亚洲mv天堂mv在影片| 欧美电影免费观看电视剧大全| 亚洲精品91美女久久久久久久| 亚洲国产成人av在线| 亚洲a在线观看| 九九综合九九综合| 91av在线播放| 国产一区二区三区免费视频| 日韩av免费看网站| 亚洲美女av网站| 欧美丰满少妇xxxxx| 欧美自拍视频在线观看| 国产精品久久电影观看| 精品成人久久av| 福利微拍一区二区| 日本精品久久久久影院| 久久久久久久久电影| 久久人人爽国产| 日韩中文字幕视频在线观看| 国产精品视频久久| 草民午夜欧美限制a级福利片| 一区二区av在线| 不用播放器成人网| 久久久精品免费| 亚洲国产精品成人一区二区| 国产成人精品午夜| 亚州国产精品久久久| 亚洲精品国产综合区久久久久久久| 91影视免费在线观看| 欧美在线观看网址综合| 欧美极品少妇xxxxⅹ喷水| 黄色精品一区二区| 国产在线精品一区免费香蕉| 日韩欧美在线观看| 国产成人精品国内自产拍免费看| 日韩最新av在线| 精品小视频在线| 亚洲人在线观看| 欧美一区二区色| 国产精国产精品| 26uuu亚洲伊人春色| 亚洲伊人久久综合| 亚洲精品国产综合区久久久久久久| 亚洲一区免费网站| 日韩欧亚中文在线| 国产精品久久久| 亚洲一区二区久久| 国产v综合ⅴ日韩v欧美大片| www.日韩不卡电影av| 久久五月天色综合| 日韩精品免费综合视频在线播放| 国产女人18毛片水18精品| 日韩精品视频观看| www.亚洲人.com| 九九九热精品免费视频观看网站| 97精品欧美一区二区三区| 亚洲а∨天堂久久精品9966| 国产欧洲精品视频| 国产综合香蕉五月婷在线| 午夜剧场成人观在线视频免费观看| 欧美成人午夜影院| 一区二区三区动漫| 26uuu日韩精品一区二区| 日韩免费在线看| 亚洲国产精品一区二区久| 亚洲精选一区二区| 精品久久久999| 狠狠久久五月精品中文字幕| 91在线视频一区| 国产日韩精品一区二区| 欧美日韩国产一区在线| 欧美中文字幕视频| 国产精品丝袜久久久久久高清| 欧美激情精品久久久久久变态| 亚洲欧美国产一区二区三区| 久久久久久成人精品| 欧美日韩免费观看中文| 日韩精品视频在线播放| 亚洲成年网站在线观看| 最新的欧美黄色| 亚洲欧洲黄色网| 国语对白做受69| 亚洲桃花岛网站| 日本精品久久中文字幕佐佐木| 欧美肥老太性生活视频| 亚洲国产高清高潮精品美女| 一本色道久久88亚洲综合88| 精品久久久久久久久国产字幕| 欧美成人精品在线观看| 日韩精品久久久久久福利| 国产精品成人一区| 国产精品久久在线观看| 亚洲精品美女免费| 日韩在线观看成人| 最近2019中文免费高清视频观看www99| 日本成人免费在线| 欧美日韩综合视频| 欧美激情一级二级| 久久精品人人爽| 国产专区精品视频| 红桃av永久久久| 日本一区二区在线播放| 国产成人一区二| 555www成人网| 亚洲经典中文字幕| 亚洲色图第一页| 日韩在线观看免费全集电视剧网站| 欧美精品中文字幕一区| 欧美日韩国产中文字幕| 97人人模人人爽人人喊中文字| 亚洲日本成人女熟在线观看| 91超碰中文字幕久久精品| 欧美在线欧美在线| 国产精品久久久久久久久久新婚| 欧美极品少妇xxxxx| 亚洲天堂网在线观看| 亚洲国模精品私拍| 中文字幕不卡在线视频极品| 精品久久久久久中文字幕大豆网| 久久久久国产精品免费| 日韩精品中文字幕在线观看| 成人伊人精品色xxxx视频| xxxxx成人.com| 国产精品日本精品| 亚洲精品黄网在线观看| 中文日韩在线观看| 成人激情av在线| 亚洲天堂网站在线观看视频| 在线视频欧美日韩| 91精品国产91久久久久久不卡| 国产精品女人网站| 欧美黑人巨大xxx极品| 欧美日韩精品中文字幕| 亚洲精品99久久久久| 精品日韩视频在线观看| 在线看国产精品| 大量国产精品视频| 美女扒开尿口让男人操亚洲视频网站| 亚洲女人天堂成人av在线| 狠狠躁夜夜躁人人躁婷婷91| 国内精品模特av私拍在线观看| 亚洲精品国产精品国自产观看浪潮|