#include<bits/stdtr1c++.h>\nusing\ namespace\ std;\ninline\ static\ const\ nullptr_t\ _={\n\t\tios_base::sync_with_stdio(0);\n\t\cin.tie(nullptr),cout.tie(nullptr);\n\t\return\ nullptr;\n}();\nusing\ namespace\ std;\ndouble\ distance(int\ x1,\ int\ y1,\ int\ x2,\ int\ y2)\ {\n\t\return\ sqrt(pow(x2\ -\ x1,\ 2)\ +\ pow(y2\ -\ y1,\ 2));\n}\ndouble\ triangleArea(int\ x1,\ int\ y1,\ int\ x2,\ int\ y2,\ int\ x3,\ int\ y3)\ {\n\t\double\ area\ =\ 0.5\ *\ abs(x1\ *\ (y2\ -\ y3)\ +\ x2\ *\ (y3\ -\ y1)\ +\ x3\ *\ (y1\ -\ y2));\n\t\return\ area;\n}\ndouble\ totalTriangleArea(vector<pair<int,\ int>>&\ points)\ {\n\t\int\ n\ =\ points.size();\n\t\double\ totalArea\ =\ 0.0;\n\t\vector<int>\ x_square(n);\n\t\vector<int>\ y_square(n);\n\t\for\ (int\ i\ =\ 0;\ i\ <\ n;\ i++)\ {\n\t\t\x_square[i]\ =\ points[i].first\ *\ points[i].first;\n\t\t\y_square[i]\ =\ points[i].second\ *\ points[i].second;\n\t}\n\t\for\ (int\ i\ =\ 0;\ i\ <\ n\ -\ 2;\ i++)\ {\n\t\t\for\ (int\ j\ =\ i\ +\ 1;\ j\ <\ n\ -\ 1;\ j++)\ {\n\t\t\t\for\ (int\ k\ =\ j\ +\ 1;\ k\ <\ n;\ k++)\ {\n\t\t\t\t\int\ x1\ =\ points[i].first;\n\t\t\t\t\int\ y1\ =\ points[i].second;\n\t\t\t\t\int\ x2\ =\ points[j].first;\n\t\t\t\t\int\ y2\ =\ points[j].second;\n\t\t\t\t\int\ x3\ =\ points[k].first;\n\t\t\t\t\int\ y3\ =\ points[k].second;\n\t\t\t\t\double\ dist1\ =\ distance(x1,\ y1,\ x2,\ y2);\n\t\t\t\t\double\ dist2\ =\ distance(x2,\ y2,\ x3,\ y3);\n\t\t\t\t\double\ dist3\ =\ distance(x1,\ y1,\ x3,\ y3);\n\t\t\t\t\double\ area\ =\ triangleArea(x_square[i],\ y_square[i],\ x_square[j],\ y_square[j],\ x_square[k],\ y_square[k]);\n\t\t\t\t\totalArea\ +=\ area;\n\t\t\t}\n\t\t}\n\t}\n\t\return\ totalArea;\n}\nint\ main()\ {\n\t\int\ n;\n\t\cin>>n;\n\t\vector<pair<int,\ int>>\ points(n);\n\t\for(int\ i=0;i<n;i++)\ cin>>points[i].first>>points[i].second;\n\t\double\ result=totalTriangleArea(points);\n\t\cout<<fixed<<setprecision(1)<<result<<'\n';\n\t\return\ 0;\n

优化 C++ 代码以计算点集所有三角形面积之和

原文地址: https://www.cveoy.top/t/topic/pPHZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录