zoukankan      html  css  js  c++  java
  • 【Luogu1337】平衡点(模拟退火)

    【Luogu1337】平衡点(模拟退火)

    题面

    洛谷

    题解

    和BZOJ3680吊打XXX是一样的。。
    但是数据很强呀。。
    疯狂调参
    各种WA。。。
    很无奈呀。。。。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<vector>
    #include<queue>
    #include<ctime>
    using namespace std;
    #define ll long long
    #define RG register
    #define MAX 20000
    #define sqr(x) ((x)*(x))
    inline int read()
    {
        RG int x=0,t=1;RG char ch=getchar();
        while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
        if(ch=='-')t=-1,ch=getchar();
        while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
        return x*t;
    }
    struct Node{double x,y,w;}p[MAX],ans;
    double mm=1e100;
    int n;
    double Dis(Node a,Node b){return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));}
    double Calc(Node P)
    {
        double ret=0;
        for(int i=1;i<=n;++i)ret+=p[i].w*Dis(P,p[i]);
        if(ret<mm)mm=ret,ans=P;
        return ret;
    }
    double Rand(){return rand()%100000/100000.00;}
    void SA(double T)
    {
        Node now=ans;
        while(T>1e-3)
        {
            Node nw;
            nw.x=now.x+T*(2*Rand()-1);
            nw.y=now.y+T*(2*Rand()-1);
            double dlt=Calc(now)-Calc(nw);
            if(dlt>0||exp(dlt/T)>Rand())now=nw;
            T*=0.99;
        }
    	for(int i=1;i<=5000;++i)
    	{
            now.x=ans.x+T*(2*Rand()-1);
            now.y=ans.y+T*(2*Rand()-1);
            Calc(now);
        }
    }
    int main()
    {
    	srand(233);
        n=read();
        for(int i=1;i<=n;++i)ans.x+=p[i].x=read(),ans.y+=p[i].y=read(),p[i].w=read();
        ans.x/=n;ans.y/=n;Calc(ans);
    	SA(100000);
        printf("%.3lf %.3lf
    ",ans.x,ans.y);
        return 0;
    }
    
    
  • 相关阅读:
    C# 排序技术研究与对比
    基于.net的通用内存缓存模型组件
    Scala学习笔记:重要语法特性
    一个初学者的指南,使用D3做数据绑定
    CLR垃圾回收的设计
    CLR线程概览(下)
    CLR线程概览(一)
    使用sos查看.NET对象内存布局
    .NET对象的内存布局
    MYC编译器源码之代码生成
  • 原文地址:https://www.cnblogs.com/cjyyb/p/8408910.html
Copyright © 2011-2022 走看看