热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

洛谷P4035[JSOI2008]球形空间生成器(高斯消元法/模拟退火算法)

本文介绍了洛谷P4035[JSOI2008]球形空间生成器问题的解决方案,主要使用了高斯消元法和模拟退火算法。通过这两种方法,可以高效地求解多维空间中的球心位置。文章提供了详细的算法模板和实现代码,适用于ACM竞赛和其他相关应用场景。数据范围限制在10以内,确保了算法的高效性和准确性。

整理的算法模板合集: ACM模板


点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划




在这里插入图片描述
数据范围只开到了10,而且是经典的力学结构,所以我们可以用模拟退火,可以做一下 nnn 维的正交分解hhh,经典物理题。

然后实际上本题就是一个高斯消元模板题
在这里插入图片描述
apple pencil用习惯了,普通的笔写起来,字丑见谅

我用的是普通的高斯消元模板,因为听说高斯 - 约旦消元法有可能会被卡掉,所以学了,但是一直不敢用QWQ

#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
typedef int itn;
typedef pair<int, int>PII;
const int N &#61; 2007, mod &#61; 1e9 &#43; 7, INF &#61; 2.1e9;
const double eps &#61; 1e-8;int n, m;
double b[N][N];//增广矩阵
double a[N][N];int guass(double a[][N])
{int c;//当前最左边的一列int r;//当前最上面的一行for(c &#61; 1, r &#61; 1; c <&#61; n; &#43;&#43; c){int t &#61; r;for(int i &#61; r &#43; 1; i <&#61; n; &#43;&#43; i){if(fabs(a[i][c]) > fabs(a[t][c]))t &#61; i;}if(fabs(a[t][c]) < eps)//等于0就下一个continue;//换到第一行&#xff08;最上面的一行&#xff09;for(int i &#61; c; i <&#61; n &#43; 1; &#43;&#43; i)swap(a[t][i], a[r][i]);//把该行第一个数变成 1&#xff08;该行每一列都/&#61;第c列的值&#xff09;for(int i &#61; n &#43; 1; i >&#61; c; -- i)a[r][i] /&#61; a[r][c];//中间所有列&#xff08;所有项&#xff09;全部消掉for(int i &#61; r &#43; 1; i <&#61; n; &#43;&#43; i)if(fabs(a[i][c]) > eps)for(int j &#61; n &#43; 1; j >&#61; c; -- j)a[i][j] -&#61; a[r][j] * a[i][c];r &#43;&#43; ;}if(r <&#61; n){for(int i &#61; r; i <&#61; n; &#43;&#43; i)if(fabs(a[i][n &#43; 1]) > eps)//非零&#xff0c;无解return 2;return 1;//无穷多组解}//回代//行最简形矩阵for(int i &#61; n; i >&#61; 1; -- i)for(int j &#61; i &#43; 1; j <&#61; n &#43; 1; &#43;&#43; j)a[i][n &#43; 1] -&#61; a[j][n &#43; 1] * a[i][j]; return 0;
}int main()
{scanf("%d", &n);for(int i &#61; 1; i <&#61; n &#43; 1; &#43;&#43; i)for(int j &#61; 1; j <&#61; n; &#43;&#43; j)scanf("%lf", &a[i][j]);for(int i &#61; 1; i <&#61; n; &#43;&#43; i)for(int j &#61; 1; j <&#61; n; &#43;&#43; j){b[i][j] &#61; 2 * (a[i][j] - a[i &#43; 1][j]);b[i][n &#43; 1] &#43;&#61; a[i][j] * a[i][j] - a[i &#43; 1][j] * a[i &#43; 1][j];}guass(b);for(int i &#61; 1; i < n; &#43;&#43; i)printf("%.3f ", b[i][n &#43; 1]);printf("%.3f\n", b[n][n &#43; 1]);return 0;
}

推荐阅读
  • 寒假作业解析:第三周 2月12日 第7题
    尽快完成之前的练习任务!每日一练2.1 Problem A Laurenty and Shop 的题目要求是选择两条不同的路线以最小化总的等待时间。简要分析:通过对比不同路线的等待时间,可以找到最优解。此问题可以通过动态规划或贪心算法来解决,具体取决于路线的复杂性和约束条件。 ... [详细]
  • 蓝桥杯算法实战:节点选取策略优化分析
    本文针对蓝桥杯算法竞赛中的节点选取策略进行了深入分析与优化。通过对比不同节点选择方法的效果,提出了基于贪心算法和动态规划的综合优化方案,旨在提高算法效率和准确性。实验结果表明,该优化策略在处理大规模数据集时表现出色,显著提升了算法性能。 ... [详细]
  • 开发心得:成为SGU475智能筏工的策略与技巧 ... [详细]
  • 经过两天的努力,终于成功解决了半平面交模板题POJ3335的问题。原来是在`OnLeft`函数中漏掉了关键的等于号。通过这次训练,不仅加深了对半平面交算法的理解,还提升了调试和代码实现的能力。未来将继续深入研究计算几何的其他核心问题,进一步巩固和拓展相关知识。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • 解题心得:UVA1339(逻辑分析与字符串处理+排序算法)
    解题心得:UVA1339(逻辑分析与字符串处理+排序算法) ... [详细]
  • 本文深入探讨了佩尔方程 \( x^2 - dy^2 = 1 \) 的递推关系式。通过构造特定的矩阵并利用矩阵快速幂的方法,可以高效地计算出该方程的第 k 组解。此外,文章还详细分析了递推关系式的数学背景及其在数论中的应用,为相关研究提供了坚实的理论基础。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 在洛谷 P1344 的坏牛奶追踪问题中,第一问要求计算最小割,而第二问则需要找到割边数量最少的最小割。通过为每条边附加一个单位权值,可以在求解最小割时优先选择边数较少的方案,从而同时解决两个问题。这种策略不仅简化了问题的求解过程,还确保了结果的最优性。 ... [详细]
  • 在解决区间相关问题时,我发现自己经常缺乏有效的思维方式,即使是简单的题目也常常需要很长时间才能找到解题思路,而一旦得到提示便能迅速理解。题目要求对一个包含n个元素的数组进行操作,并给出一个参数k,具体任务是…… ... [详细]
  • 在Python多进程编程中,`multiprocessing`模块是不可或缺的工具。本文详细探讨了该模块在多进程管理中的核心原理,并通过实际代码示例进行了深入分析。文章不仅总结了常见的多进程编程技巧,还提供了解决常见问题的实用方法,帮助读者更好地理解和应用多进程编程技术。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • 在Java编程中,`AbstractClassTest.java` 文件详细解析了抽象类的使用方法。该文件通过导入 `java.util.*` 包中的 `Date` 和 `GregorianCalendar` 类,展示了如何在主方法 `main` 中实例化和操作抽象类。此外,还介绍了抽象类的基本概念及其在实际开发中的应用场景,帮助开发者更好地理解和运用抽象类的特性。 ... [详细]
  • 图论入门基础教程
    图论是计算机科学和数学中的重要分支,本教程旨在为初学者提供全面的基础知识。通过实例解析,如“昂贵的聘礼”问题,讲述了一个年轻探险家在印第安部落与酋长女儿的爱情故事,展示了图论在解决实际问题中的应用。教程内容涵盖了图的基本概念、表示方法以及常见算法,适合各类读者学习。 ... [详细]
author-avatar
今生绝恋2702934494
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有