日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

便利店选址

發(fā)布時(shí)間:2023/12/29 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 便利店选址 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述:

某小區(qū)決定在小區(qū)內(nèi)部建一家便利店,現(xiàn)小區(qū)內(nèi)部共有八棟樓,它們的地理坐標(biāo)分別為:(10,20)(30,34)(19,25)(38,49.1)(9,38.1)(2,34)(5,8) (29,48)。同時(shí),其中的住戶人數(shù)分別為:30,45,28,8,36,16,78,56。為了方便更多的住戶購物,要求實(shí)現(xiàn)總體最優(yōu),請問便利店應(yīng)該建立在哪里?

【提示】

1)便利店無論選址何處,八棟樓的居民均可直接到達(dá),即八棟樓與便利店均相鄰,且距離為直線距離;

2)八棟樓的居民人數(shù)為權(quán)重,應(yīng)該方便大多數(shù)人,實(shí)現(xiàn)總體最優(yōu)。

感覺好玩的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題,雖然沒發(fā)現(xiàn)這題跟數(shù)據(jù)結(jié)構(gòu)有什么關(guān)系。看到這題想了好久沒什么思路,沒發(fā)現(xiàn)什么數(shù)據(jù)結(jié)構(gòu)可以解這題。枚舉點(diǎn)的話,也沒有什么好的策略(其實(shí)也蠻麻煩)。前幾天打了一場warmup,有道題比賽的時(shí)候想了好久的,一直以為是搜索,但是數(shù)據(jù)量太大也沒敢寫。比賽完了發(fā)現(xiàn)那題竟然是用隨機(jī)算法過的。瞬間感覺隨機(jī)算法好強(qiáng)大的樣子。然后就想到了這題,隨機(jī)算法太適合不過了。與其苦苦想枚舉點(diǎn)的策略,還不如隨機(jī)打10w個(gè)點(diǎn)呢,10w不夠?1000w如何?

詳情請見代碼:

#include <iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cmath>
using namespace std;
const int N = 100;
const double inf = 10000000.0;
const double eps = 1e-8;
int people_num[N];
struct node
{
    double x,y;
}position[N];
int n;
double dis(int i,double x,double y)
{
    return sqrt((x - position[i].x) * (x - position[i].x) + (y - position[i].y) * (y - position[i].y));
}
double cal(double x,double y)
{
    double ret = 0;
    for(int i = 1;i <= n;i ++)
        ret = ret + dis(i,x,y) * people_num[i];
    return ret;
}
int main()
{
    int i;
    freopen("data.in","r",stdin);
    scanf("%d",&n);
    double minx,miny,maxy,maxx;
    minx = miny = inf;
    maxx = maxy = -inf;
    for(i = 1;i <= n;i ++)
    {
        scanf("%lf%lf",&position[i].x,&position[i].y);
        if(position[i].x > maxx)
            maxx = position[i].x;
        if(position[i].x < minx)
            minx = position[i].x;
        if(position[i].y > maxy)
            maxy = position[i].y;
        if(position[i].y < miny)
            miny = position[i].y;
    }
    for(i = 1;i <= n;i ++)
        scanf("%d",&people_num[i]);
    maxx *= 100;
    maxy *= 100;
    minx *= 100;
    miny *= 100;
    int lenx = ceil(maxx - minx);
    int leny = ceil(maxy - miny);
    double ansx,ansy,Max;
    Max = inf;
    srand((unsigned)time(NULL));
    for(i = 1;i <= 100000;i ++)
    {
        double tmpx = rand()%lenx + minx;
        double tmpy = rand()%leny + miny;
        tmpx = tmpx / 100;
        tmpy = tmpy / 100;
        double tmp = cal(tmpx,tmpy);
        if(tmp - Max < eps)
        {
            ansx = tmpx;
            ansy = tmpy;
            Max = tmp;
        }
    }
    printf("便利店的地址為:(%.2lf,%.2lf)
",ansx,ansy);
    return 0;
}
/*
便利店地址:(16.53,27.43)
最優(yōu)值:5146.85
*/

隨機(jī)算法,你值得擁有喲嚯嚯嚯嚯~

總結(jié)

以上是生活随笔為你收集整理的便利店选址的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。