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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

zoj 1670 Jewels from Heaven

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zoj 1670 Jewels from Heaven 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:三個人,在給定正方形內,求第一個人拿到珠寶的概率。珠寶隨機出現在正方形內。

思路:中垂線+半平面相交。

1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<cstdlib> 6 #include<string> 7 #include<cmath> 8 #include<vector> 9 using namespace std; 10 const int maxn=1e5+7; 11 const double eps=1e-8; 12 const double pi=acos(-1); 13 14 double dcmp(double x) 15 { 16 if(fabs(x) < eps) return 0; 17 else return x < 0 ? -1 : 1; 18 } 19 20 struct Point 21 { 22 double x, y; 23 Point(double x=0, double y=0):x(x),y(y) { } 24 }; 25 26 typedef Point Vector; 27 28 Vector operator + (const Point& A, const Point& B) 29 { 30 return Vector(A.x+B.x, A.y+B.y); 31 } 32 33 Vector operator - (const Point& A, const Point& B) 34 { 35 return Vector(A.x-B.x, A.y-B.y); 36 } 37 38 Vector operator * (const Point& A, double v) 39 { 40 return Vector(A.x*v, A.y*v); 41 } 42 43 Vector operator / (const Point& A, double v) 44 { 45 return Vector(A.x/v, A.y/v); 46 } 47 48 double Cross(const Vector& A, const Vector& B) 49 { 50 return A.x*B.y - A.y*B.x; 51 } 52 53 double Dot(const Vector& A, const Vector& B) 54 { 55 return A.x*B.x + A.y*B.y; 56 } 57 58 double Length(const Vector& A) 59 { 60 return sqrt(Dot(A,A)); 61 } 62 63 Vector Rotate(Vector A,double rad) 64 { 65 return Vector(A.x*cos(rad)-A.y*sin(rad),A.x*sin(rad)+A.y*cos(rad)); 66 } 67 68 bool operator < (const Point& p1, const Point& p2) 69 { 70 return p1.x < p2.x || (p1.x == p2.x && p1.y < p2.y); 71 } 72 73 bool operator == (const Point& p1, const Point& p2) 74 { 75 return p1.x == p2.x && p1.y == p2.y; 76 } 77 78 Vector Normal(Vector A) 79 { 80 double L=Length(A); 81 return Vector(-A.y/L,A.x/L); 82 } 83 struct Line 84 { 85 Point P; 86 Vector v; 87 double ang; 88 Line() {} 89 Line(Point P, Vector v):P(P),v(v) 90 { 91 ang = atan2(v.y, v.x); 92 } 93 bool operator < (const Line& L) const 94 { 95 return ang < L.ang; 96 } 97 }; 98 99 bool OnLeft(const Line& L, const Point& p) 100 { 101 return Cross(L.v, p-L.P) > 0; 102 } 103 104 105 Point GetLineIntersection(const Line& a, const Line& b) 106 { 107 Vector u = a.P-b.P; 108 double t = Cross(b.v, u) / Cross(a.v, b.v); 109 return a.P+a.v*t; 110 } 111 112 const double INF = 1e8; 113 114 Point ansPoly[maxn]; 115 int HalfplaneIntersection(vector<Line> L) //L為切割平面的直線集合,求半平面交,返回點的個數,點存在anspoly數組中 116 { 117 int n = L.size(); 118 sort(L.begin(), L.end()); // 按極角排序 119 int first, last; // 雙端隊列的第一個元素和最后一個元素的下標 120 vector<Point> p(n); // p[i]為q[i]和q[i+1]的交點 121 vector<Line> q(n); // 122 q[first=last=0] = L[0]; // 123 for(int i = 1; i < n; i++) 124 { 125 while(first < last && !OnLeft(L[i], p[last-1])) last--; 126 while(first < last && !OnLeft(L[i], p[first])) first++; 127 q[++last] = L[i]; 128 if(fabs(Cross(q[last].v, q[last-1].v)) < eps) // 129 { 130 last--; 131 if(OnLeft(q[last], L[i].P)) q[last] = L[i]; 132 } 133 if(first < last) p[last-1] = GetLineIntersection(q[last-1], q[last]); 134 } 135 while(first < last && !OnLeft(q[first], p[last-1])) last--; // 136 if(last - first <= 1) return 0; // 137 p[last] = GetLineIntersection(q[last], q[first]); // 138 // 從deque復制到輸出中 139 int index=0; 140 for(int i = first; i <= last; i++) ansPoly[index++]=p[i]; 141 return index; 142 } 143 144 double PolygonArea(int n,Point *p) 145 { 146 double area=0; 147 for(int i=1; i<n-1; i++) 148 area+=Cross(p[i]-p[0],p[i+1]-p[0]); 149 return area/2; 150 } 151 152 Point p[5]; 153 int main() 154 { 155 // freopen("in.txt","r",stdin); 156 while(cin>>p[0].x>>p[0].y>>p[1].x>>p[1].y>>p[2].x>>p[2].y) 157 { 158 if(p[0].x==p[1].x&&p[0].y==p[1].y&&p[0].x==0)break; 159 // Point zd1,zd2; 160 vector<Line> vec; 161 vec.push_back(Line(Point(0,0),Point(1,0))); 162 vec.push_back(Line(Point(10000,0),Point(0,1))); 163 vec.push_back(Line(Point(10000,10000),Point(-1,0))); 164 vec.push_back(Line(Point(0,10000),Point(0,-1))); 165 Vector v=(p[1]-p[0]); 166 vec.push_back(Line((p[1]+p[0])*0.5,Normal(v))); 167 v=(p[2]-p[0]); 168 vec.push_back(Line((p[2]+p[0])*0.5,Normal(v))); 169 int m=HalfplaneIntersection(vec); 170 double ans=PolygonArea(m,ansPoly); 171 printf("%.3f\n",ans/(1.0*10000*10000)); 172 } 173 return 0; 174 } View Code

?

轉載于:https://www.cnblogs.com/ITUPC/p/5137532.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的zoj 1670 Jewels from Heaven的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91视频免费网址 | 久久网一区 | 女性裸体无遮挡胸 | 国产激情片 | 综合伊人久久 | 美女色呦呦 | 激情视频网址 | 野花中文免费观看6 | 精品深夜av无码一区二区老年 | 国产精品视频福利 | 一级看片| 牛牛影视免费观看 | brazzers欧美大波霸 | 亚洲区视频在线观看 | 国产第9页| 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 国产一区二区三区视频免费在线观看 | 影音先锋成人资源网站 | av免费观看网站 | 国产精品宾馆在线 | 成人里番精品一区二区 | 久久久999国产精品 天堂av中文在线 | 538精品在线视频 | 日本黄色xxx | 日本道在线观看 | 国产三级漂亮女教师 | 国产精品无码成人片 | 青娱乐国产 | 特级丰满少妇一级aaaa爱毛片 | 国语对白在线观看 | 激情网综合 | 欧美成人三级在线观看 | 华丽的外出在线观看 | 国产20页 | 亚洲视频一区在线观看 | av视屏在线 | 大肉大捧一进一出好爽视频 | 日本高清黄色电影 | 国产精品成人免费一区二区视频 | www在线看片 | 亚洲精品日韩精品 | 欧美成人激情 | 黄色在线观看视频 | 亚洲清色 | 黄色性生活一级片 | 久久久久久久久久久久电影 | 欧美特黄 | 涩涩涩涩涩涩涩涩涩涩 | av在线不卡免费观看 | 亚洲精品电影在线观看 | 精品不卡一区二区 | 密臀av一区二区 | 激情伦成人综合小说 | 电车痴汉在线观看 | 亚洲一区二区日本 | 色就操| 国产精品无码一区二区桃花视频 | 国产伦理在线观看 | 久久人人爽人人 | 91成年人视频 | 日韩avv| 国产偷拍一区二区三区 | 天堂在线免费视频 | 欧美不卡在线 | 日韩免费av在线 | 九九热综合 | av高清在线观看 | 办公室摸腿吻胸激情视频 | jizzzz中国| 扒下小娇妻的内裤打屁股 | 麻豆婷婷 | 欧美一区二区三区四区在线观看 | 国产香蕉视频在线播放 | 日本三级韩国三级三级a级中文 | www.男女| 性欧美videos另类hd | 男女天堂av | 日韩爽爽视频 | 影音先锋成人资源 | 国产露脸无套对白在线播放 | 日本不卡视频 | 欧美日韩一区二区在线观看视频 | 欧美天堂久久 | 中国av免费| 欧美自拍区 | 乳揉みま痴汉4在线播放 | 岛国片免费在线观看 | 中文字幕人妻一区二区在线视频 | 麻豆视频播放 | 欧美成人aa| 日本夜夜操 | 色偷偷噜噜噜亚洲男人的天堂 | 伊人啪啪网 | 亚洲在线视频播放 | aaaa黄色片| 精品一区二区中文字幕 | 麻豆久久久久久久 | 色哟哟免费在线观看 | 久久看视频 |