[洛谷P1337][JSOI2004]平衡点 / 吊打XXX
题目大意:有$n$个重物,每个重物系在一条绳子上。所有绳子系在一起,问绳结最终平衡于何处。
题解:$NOIP$前学学模拟退火,但发现我脸好黑啊。。。
卡点:脸黑
C++ Code:
- #include <cstdio>
- #include <cmath>
- #include <ctime>
- #include <cstdlib>
- #include <ctime>
- #define maxn 1010
- int Tim = 22;
- const int __Tim = 2000;
- const double eps = 1e-6, __eps = 1e-4;
- const double k = 0.995, Temp = 500;
- inline double abs(double a) {return a < 0 ? -a : a;}
- inline double dis(double x, double y) {return sqrt(x * x + y * y);}
- inline double RAND() {return static_cast<double> (rand()) / RAND_MAX;}
- int n;
- struct point {
- double x, y, w;
- inline void operator += (const point &rhs) {
- x += rhs.x;
- y += rhs.y;
- w += rhs.w;
- }
- inline void operator /= (const double &rhs) {
- x /= rhs;
- y /= rhs;
- }
- } s[maxn], ans;
- inline double calc(point &lhs) {
- lhs.w = 0;
- for (register int i = 1; i <= n; i++) {
- lhs.w += dis(lhs.x - s[i].x, lhs.y - s[i].y) * s[i].w;
- }
- return lhs.w;
- }
- void SA() {
- double T = Temp, del;
- point now = ans, nxt;
- while (T > eps) {
- nxt.x = now.x + T * (2 * RAND() - 1);
- nxt.y = now.y + T * (2 * RAND() - 1);
- del = calc(nxt);
- if ((del < now.w) || exp((now.w - nxt.w) / T) > RAND()) now = nxt;
- if (del < ans.w) ans = nxt;
- T *= k;
- }
- int Tim = __Tim;
- now = ans;
- T = __eps;
- while (Tim --> 0) {
- nxt.x = now.x + T * (2 * RAND() - 1);
- nxt.y = now.y + T * (2 * RAND() - 1);
- del = calc(nxt);
- if ((del < now.w) || exp((now.w - nxt.w) / T) > RAND()) now = nxt;
- if (del < ans.w) ans = nxt;
- }
- }
- int main() {
- srand(20040826);
- scanf("%d", &n);
- for (int i = 1; i <= n; i++) {
- scanf("%lf%lf%lf", &s[i].x, &s[i].y, &s[i].w);
- ans += s[i];
- }
- ans /= n; calc(ans);
- while (Tim --> 0) SA();
- printf("%.3lf %.3lf\n", ans.x, ans.y);
- return 0;
- }
[洛谷P1337][JSOI2004]平衡点 / 吊打XXX的更多相关文章
- 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX
洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 点击进入FakeHu的模拟退火博客 神仙模拟退火...去看fakehu的博客吧...懒得写了... 因为精度问题要在求得的最优解附近(大约 ...
- 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 解题报告
P1337 [JSOI2004]平衡点 / 吊打XXX 题目描述 有 \(n\) 个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.\(X\)处就是公共的绳结.假设 ...
- 洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到 ...
- 洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
传送门 先坑着,联赛活着回来的话我就写(意思就是我绝对不会写了) //minamoto #include<cstdio> #include<cmath> #include< ...
- P1337 [JSOI2004]平衡点 / 吊打XXX 模拟退火
链接 https://www.luogu.org/problemnew/show/P1337 思路 交了好多发,都是wrong 初始值取平均数就1A了 真的是玄学的算法 代码 // luogu-jud ...
- P1337 [JSOI2004]平衡点 / 吊打XXX
题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到 ...
- Luogu P1337 [JSOI2004]平衡点 / 吊打XXX
一道入门模拟退火的经典题,还是很考验RP的 首先我们发现神TM这道题又和物理扯上了关系,其实是一道求广义费马点的题目 首先我们可以根据物理知识得到,当系统处于平衡状态时,系统的总能量最小 又此时系统的 ...
- LUOGU P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
传送门 解题思路 学习了一下玄学算法--模拟退火,首先要求平衡处,也就是求势能最小的地方,就是求这个点到所有点的距离*重量最小.剩下的几乎是模拟退火的板子了. #include<iostream ...
- luogu1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
推荐博客:模拟退火总结(模拟退火)by FlashHu.模拟退火的原理,差不多就是不断地由现有的值不断地试探,不断地转到更优的值,并在一定概率下转到较差的值. 题目传送门:luogu1337 [JSO ...
随机推荐
- Scala语法(三)
模式匹配 1)match val a = 1 val b=a match { *// a match { }返回值赋予变量 b case 1 => "red" case 2 ...
- 一个 mr 作业跑的比较慢,如何来优化。
mr跑的慢可能有很多原因,如:数据倾斜.map和reduce数设置不合理.reduce等待过久.小文件过多.spill 次数过多. merge 次数过多等. 1.解决数据倾斜:数据倾斜可能是parti ...
- Learning Experience of Big Data: Learn to install CentOs 6.5 on my laptop
I have learnt some experience about Big Data during my summer vocation,I was told that The first thi ...
- 8.1 编写USB鼠标驱动程序,并测试
学习目标:编写USB鼠标驱动程序,并测试(将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键). 一.怎么写USB设备驱动程序?步骤如下: 1. 首先先定义全局变量usb_d ...
- 函数:引用file类对象及io类对象作为参数打印文本及显示文本
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; voi ...
- javascript 之 为函数设置默认参数值
方法一: function example(a,b){ var a = arguments[0] ? arguments[0] : 1;//设置参数a默认为1 var b = arguments[1] ...
- 1754-I Hate It 线段树(单点替换,区间最值)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Maven初步接触
最近随着搜资料,网上这样的字眼越来越多,我了解到这是构建项目的一种方式,于是准备简单看一下 首先粘几篇文章,作为学习的初步资料 Maven入门 http://blog.csdn.net/prstaxy ...
- ant-design 实现一个登陆窗口
前提:已经完成项目实战(https://ant.design/docs/react/practical-projects-cn#定义-Model) 如果要想实现一个登陆窗口,首先得有一个ui,想到的是 ...
- ProxySQL初体验
Preface As we all know,it's a common sense that separate reading and writing operations can ...