problem

solution

题意:

  • 给出n个重物的坐标和重量,他们通过一根绳子穿过正上方的洞连在桌面上的某个绳结处,求该绳结的坐标位置。

思路:

  • 根据物理知识:当系统处于平衡状态时,系统的总能量最小。此时系统的总能量是等于各个物体的重力势能,在质量一定时,即要求物体离地最近,离桌子最远。那么,也就是绳子在桌子上的距离尽量的小。
  • 模拟退火,每次随机一个桌子上的点,判断n个洞口到他的总距离和是大了还是小了,找最小的即可。其实就是之前写过的“星星还是树”,就是空间n个点,找距离和最近的点即可。
#include<bits/stdc++.h>
using namespace std;int n;
struct node{int x, y, w;}a[2020];
struct node2{double x, y, w;}ans;
double calc(double x, double y){//计算系统总能量double res = 0;for(int i = 1; i <= n; i++){double dx=x-a[i].x, dy=y-a[i].y;res += sqrt(dx*dx+dy*dy)*a[i].w;}return res;
}
void sa(){for(double t=3000; t >= 1e-15; t*=0.996){node2 tmp;tmp.x = ans.x+(rand()*2-RAND_MAX)*t;tmp.y = ans.y+(rand()*2-RAND_MAX)*t;tmp.w = calc(tmp.x, tmp.y);double dt =tmp.w-ans.w;if(dt<0)ans = tmp;else if(exp(-dt/t)>(double)rand()/RAND_MAX)ans=tmp;}
}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;for(int i = 1; i <= n; i++){cin>>a[i].x>>a[i].y>>a[i].w;ans.x+=a[i].x, ans.y+=a[i].y;}ans.x /= n, ans.y /= n, ans.w = calc(ans.x,ans.y);sa();cout<<fixed<<setprecision(3)<<ans.x<<" "<<ans.y<<"\n";return 0;
}

【luogu1337】【JSOI2004】平衡点 / 吊打XXX(模拟退火)相关推荐

  1. P1337 [JSOI2004]平衡点 / 吊打XXX 模拟退火

    平衡点 / 吊打XXX solution 记录一下模拟退火的几个题目 code /*SiberianSquirrel*//*CuteKiloFish*/ #include <bits/stdc+ ...

  2. 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX

    具体题目见洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 方法一:模拟退火 思路:当绳子平衡时,系统的能量最小,则此时物体总的重力势能要最小,也就是物体重量一定的情况下绳长最长,即桌子上 ...

  3. 模拟退火总结+洛谷模板题(P1337 [JSOI2004]平衡点 / 吊打XXX)

    原来就听说过模拟退火,然后一直觉得神奇,但是没有真正的去实现这个算法. 模拟退火对TSP之类的问题很实用. 1.概念:模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一 ...

  4. 洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)

    传送门 先坑着,联赛活着回来的话我就写(意思就是我绝对不会写了) 1 //minamoto 2 #include<cstdio> 3 #include<cmath> 4 #in ...

  5. P1337-[JSOI2004]平衡点/吊打XXX【模拟退火】

    正题 题目链接:https://www.luogu.com.cn/problem/P1337 题目大意 nnn个点有重量wiw_iwi​,求重心. 解题思路 模拟退火随机找一个重心然后不断接近即可. ...

  6. BZOJ 3680 吊打XXX 模拟退火

    首先这题应该改名叫吊打出题人 题目大意:给定n个质点,求重心 这n个质点的重心满足Σ(重心到点i的距离)*g[i]最小 模拟退火的裸题 尼玛交了两篇 死活过不去 各种改参数 最后发现是我的INF不够大 ...

  7. 平衡点 / 吊打XXX(洛谷-P1337)

    题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到 ...

  8. 【bzoj 3680】吊打XXX

    吊打XXX Time Limit: 10 Sec Memory Limit: 128 MBSec Special Judge Submit: 2715 Solved: 992 [Submit][Sta ...

  9. 【洛谷1337】[JSOI2004] 吊打XXX(模拟退火经典题)

    点此看题面 大致题意: 一个平面上有 n n n个点,每个点有1个权值,现在要选择平面上的一个点,使这 n n n个点的权值乘上到达选定点的距离之和最小. 模拟退火 我们可以用模拟退火来做这道题. L ...

最新文章

  1. eclipse删除perspective
  2. HyperLedger Fabric区块链技术形成(1.2)
  3. 在SpringMVC中使用Jackson并格式化时间
  4. MySQL主从失败 错误Got fatal error 1236解决方法
  5. 百度2020Q3财报:“十四五”规划注入新动能,百度智能云驶入快车道
  6. python LAADS+Selenium下载MODIS数据
  7. rabbitmq的安装和使用
  8. 发现Java程序中的Bug
  9. jsp 中包含 一个路径为变量的文件
  10. 多路查找树之2-3树(理论)
  11. “饮水机”:形象比喻 深入浅出理解RAID
  12. 数据挖掘--非负矩阵分解
  13. CodeForces128A - Statues 解题报告
  14. 使用python替换word文档部分内容
  15. 什么笔记本学计算机二级,计算机二级Office
  16. kubeadm join时报错Unauthorized
  17. oracle占用io,解决 oracle IO占用率很高的问题
  18. 结合推荐营销和社交媒体的最佳实践有哪些?
  19. 嵌入式系统常用词汇表
  20. “从零到一“基于Freeswitch二次开发:Freeswitch入门与网络架构 (一)

热门文章

  1. word 软换行与硬换行
  2. 质数的无穷性——从素数到数论
  3. VS 2013 统一修改所有工程的目录配置(以 boost、opencv3 的安装为例)
  4. sklearn 细节 —— SGDClassifier、Perceptron(分类模型)
  5. vue 心跳监控_Vue中WebSocket加入心跳机制
  6. 廖雪峰python教程-Python 2.7教程
  7. python基本代码教程-Python基础教程(第3版)
  8. 学python有前途吗-学python有前途吗?
  9. python编程案例教程-Python程序开发案例教程
  10. python爬虫步骤-Python爬虫的步骤和工具