在本地做改版如何替换旧网站会影响百度收录吗网站建设与制作石家庄
2026/4/18 10:10:49 网站建设 项目流程
在本地做改版如何替换旧网站会影响百度收录吗,网站建设与制作石家庄,城乡建设网站,城市建设灯具网站题目蒟蒻的解题步骤第一步#xff1a;理解核心需求这本质上是一个排序问题。既然要按照高度爬#xff0c;那就必须先把所有点按z坐标排序。但有个细节要注意——如果两个点高度一样咋办#xff1f;题目没说#xff0c;我就自己定了规则#xff1a;z相同看y#xff0c;y相…题目蒟蒻的解题步骤第一步理解核心需求这本质上是一个排序问题。既然要按照高度爬那就必须先把所有点按z坐标排序。但有个细节要注意——如果两个点高度一样咋办题目没说我就自己定了规则z相同看yy相同再看x确保顺序唯一第二步数据结构设计我选择用结构体来存点这样代码更清晰struct AAA { int x, y, z; }a[50000];不要去在意奇怪的命名纯粹懒得起名了第三步解决排序问题我写了一个比较函数这是整个代码的核心bool cmp(AAA a, AAA b) { if (a.z b.z) // 先比高度 { if (a.y b.y) // 高度一样比y { return a.x b.x; // 还一样就比x } return a.y b.y; } return a.z b.z; }第四步计算距离排序之后计算距离就简单了我直接从第二个点开始每个点都和前面那个点算距离for (int i 1; i p; i) { X a[i].x - a[i - 1].x; Y a[i].y - a[i - 1].y; Z a[i].z - a[i - 1].z; sum sqrt((X * X) (Y * Y) (Z * Z)); }这里我用的是最直接的三维距离公式sqrt是标准库函数不用自己实现第五步处理输出精度题目要求保留三位小数cout fixed setprecision(3) sum;fixed保证不用科学计数法setprecision(3)设三位小数我遇到的坑和解决方案坑1浮点数精度问题一开始我担心整数平方会有溢出的可能后来一想坐标值不会太大int类型应该够用而且我用的是double存中间结果精度应该没问题。坑2边界情况如果只有一个点咋办我看了下循环是从i1开始的当p1时循环不执行sum保持0正好符合要求。坑3排序规则是否必要想了半天要不要写这么复杂的比较函数为了确保结果还是写了完整的三级比较。我对代码的自我评价这个代码我觉得有几个优点逻辑清晰排序→计算→输出步骤分明效率不错O(n log n)的排序加上O(n)的计算50000个点完全能处理可读性好虽然结构体名字随便了点但整体结构清晰如果要说可以改进的地方结构体名字可以起得更有意义些可以用引用传参避免拷贝写代码时的小技↗巧↘用bits/stdc.h比赛时省时间不用记那么多头文件变量名简单X,Y,Z虽然简单但在这里很直观直接写计算式不单独封装函数减少调用开销心得感受其实这道题不算难主要考察基本功。我写的时候最深的感受是理解题意比写代码更重要。我见过有人没注意要按高度排序直接按输入顺序算距离那肯定就错了。也有人在比较函数里写反了小于号导致排序顺序不对。对我来说写这种题就像搭积木——先把问题分解成几个步骤输入、排序、计算、输出然后每个步骤用合适的代码实现最后组合起来。有时候我会想如果我是出题人我会怎么设计测试数据可能我会放一些z相同的点看选手有没有考虑到也可能放一些坐标值很大的点看会不会溢出感受找ai概括的真的不会总结啊喂最后贴个全代码#includebits/stdc.h using namespace std; struct AAA { int x, y, z; }a[50000]; bool cmp(AAA a, AAA b) { if (a.z b.z) { if (a.y b.y) { return a.x b.x; }return a.y b.y; }return a.z b.z; } int main() { int p; double X,Y,Z, sum0; cin p; for (int i 0; i p; i) { cin a[i].x a[i].y a[i].z; } sort(a, a p,cmp); for (int i 1; i p; i) { Xa[i].x - a[i - 1].x; Ya[i].y - a[i - 1].y; Za[i].z - a[i - 1].z; sumsqrt((X * X) (Y * Y) (Z * Z)); } cout fixedsetprecision(3) sum; return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询