【luogu1337】[jsoi]平衡点

2014年5月31日1,5325

题目描述

    如图:有n个重物,每个重物系在一条足够长的绳子上。每条绳子自上而下穿过桌面上的洞,然后系在一起。图中X处就是公共的绳结。假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到地上),且忽略所有的摩擦。
问绳结X最终平衡于何处。
注意:桌面上的洞都比绳结X小得多,所以即使某个重物特别重,绳结X也不可能穿过桌面上的洞掉下来,最多是卡在某个洞口处。

输入格式

    文件的第一行为一个正整数n(1≤n≤1000),表示重物和洞的数目。接下来的n行,每行是3个整数:Xi.Yi.Wi,分别表示第i个洞的坐标以及第 i个重物的重量。(-10000≤x,y≤10000, 0<w≤1000 )

输出格式

    你的程序必须输出两个浮点数(保留小数点后三位),分别表示处于最终平衡状态时绳结X的横坐标和纵坐标。两个数以一个空格隔开。

样例输入

3
0 0 1
0 2 1
1 1 1

样例输出

0.577 1.000

题解

设桌子的高度为h0,每根绳子长l0[i],在座子上的长度为a[i]

那么E=Σw[i]*(h0-l0[i])+Σw[i]*a[i]

只要最小化Σw[i]*a[i]即可

所以问题转化为广义费马点

 

  • cony2015年1月30日 上午8:21 回复

    图挂了

    #1  
    • hzwer2015年1月30日 上午10:32 回复
      admin

      没办法。。。

      #11
  • 童话2015年6月5日 下午2:23 回复

    请问:ansx+=x*t,为啥是乘t
    x是水平合外力,t是精度误差,那么这个式子怎么理解?

    #2  
    • hzwer2015年6月6日 上午9:05 回复
      admin

      这是模拟退火丫。。

      #21
  • 童话2015年6月6日 下午12:11 回复

    谢谢!

    #3