昆明网站开发哪家好,江都网络建站,务分销系统,手机网站seo优化提问#xff1a;我是什么品种的傻逼#xff1f; 哇看到积水兴高采烈啊。然后就走上了一条不归路。 为什么不归呢#xff0c;因为我这个法子就是不对的#xff0c;我总是在想很多很多点围成的一块区域#xff0c;然后求这一块区域的面积。 然后尝试了各种扫描方法#xff…提问我是什么品种的傻逼 哇看到积水兴高采烈啊。然后就走上了一条不归路。 为什么不归呢因为我这个法子就是不对的我总是在想很多很多点围成的一块区域然后求这一块区域的面积。 然后尝试了各种扫描方法递增序列找最低找最高啊什么的。 自闭。 搜题解考虑所有相邻的两个点和他们两边的制高点。那么面积可能是 梯形(制高点高),直角三角形(相交)0. 然后就完了。。。 哇小学数学题难死了啊。 我是智障啊。 1 #include bits/stdc.h2 using namespace std;3 typedef double db;4 const int N 1e55;5 const db eps1e-6;6 const db piacos(-1);7 int sign(db k){8 if (keps) return 1; else if (k-eps) return -1; return 0;9 }
10 int cmp(db k1,db k2){ return sign(k1-k2);}
11 struct point {
12 db x,y;
13 point operator (const point k1) const{return (point){k1.xx,k1.yy};}
14 point operator - (const point k1) const{return (point){x-k1.x,y-k1.y};}
15 point operator * (db k1) const{return (point){x*k1,y*k1};}
16 point operator / (db k1) const{return (point){x/k1,y/k1};}
17 db abs(){ return sqrt(x*xy*y);}
18 db dis(point k1){ return (*this-k1).abs();}
19 };
20 db cross(point k1,point k2){ return k1.x*k2.y-k1.y*k2.x;}
21 db dot(point k1,point k2){ return k1.x*k2.xk1.y*k2.y;}
22 point proj(point k1,point k2,point q){
23 point kk2-k1;return k1k*(dot(q-k1,k)/k.abs());
24 }
25 point getLL(point k1,point k2,point k3,point k4){
26 db w1cross(k1-k3,k4-k3),w2cross(k4-k3,k2-k3); return (k1*w2k2*w1)/(w1w2);
27 }
28 db area(vectorpoint A){ //
29 db ans0;
30 for (int i1;iA.size()-1;i)
31 anscross(A[i]-A[0],A[i1]-A[0]);
32 return ans/2;
33 }
34 int t,n;
35 point a[N];
36 db pre[N],las[N];//
37 vectorpoint v;
38 int main(){
39 //freopen(awsl.in,r,stdin);
40 scanf(%d,t);
41 while (t--){
42 memset(pre,0, sizeof(pre));
43 memset(las,0, sizeof(las));
44 memset(a,0, sizeof(a));
45 scanf(%d,n);
46 for(int i1;in;i){
47 scanf(%lf%lf,a[i].x,a[i].y);
48 }
49 for(int i1;in;i){
50 pre[i]max(pre[i-1],a[i].y);
51 }
52 for(int in;i1;i--){
53 las[i]max(las[i1],a[i].y);
54 }
55 db ans 0;
56 for(int i1;in;i){
57 if(a[i].ya[i1].y){
58 db cut min(min(las[i1],pre[i1]),min(las[i],pre[i]));
59 if(cuta[i].y){
60 ans(cut-a[i].ycut-a[i1].y)*(a[i1].x-a[i].x)/2;
61 } else if(cuta[i1].y){
62 point p1 point{1.0,cut};
63 point p2 point{2.0,cut};
64 point xxx getLL(p1,p2,a[i],a[i1]);
65 ans(xxx.y-a[i1].y)*(a[i1].x-xxx.x)/2;
66 }
67 } else{
68 db cut min(min(las[i1],pre[i1]),min(las[i],pre[i]));
69 if(cuta[i1].y){
70 ans(cut-a[i].ycut-a[i1].y)*(a[i1].x-a[i].x)/2;
71 } else if(cuta[i].y){
72 point p1 point{1.0,cut};
73 point p2 point{2.0,cut};
74 point xxx getLL(p1,p2,a[i],a[i1]);
75 ans(xxx.y-a[i].y)*(xxx.x-a[i].x)/2;
76 }
77 }
78 }
79 printf(%.10f\n,ans);
80 }
81 } View Code 转载于:https://www.cnblogs.com/MXang/p/10495135.html