亚马逊 在线测试题目 amazon

分析:其实就是求矩形中某一个点到其他点的距离加权最小

方法一:

对每一个点求其到其他点的加权距离,然后比较最小。由于有M*N个点,对每一个点求加权距离是O(M*N)的,所以整体时间复杂度是O(M*M*N*N)的。

方法二:

首先做预处理,计算每一行有多少个点,每一列有多少个点,然后计算把其他行的点挪到我这一行需要的加权距离,把其他列的点挪到我这一列的加权距离,

然后对每一个点,计算挪到其所在行的代价+所在列的代价和,求出最小。时间复杂度O(M*N)。

code见下面,calcMIN是方法一,calcDiego是方法二。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

#define MAX_SIZE 500

int arr[MAX_SIZE][MAX_SIZE];
int sumOfRow[MAX_SIZE];
int sumOfCol[MAX_SIZE];
int costOfRow[MAX_SIZE];
int costOfCol[MAX_SIZE];

int rtnRow;
int rtnCol;

int calcCost(int row, int col, int x, int y)
{
    int cost = 0;
    for(int i = 0; i < row; i++)
    {
        for(int j = 0; j < col; j++)
        {
            if(arr[i][j] != 0)
            {
                cost += (abs(x-i) + abs(y-j)) * arr[i][j];
            }
        }
    }
    return cost;
}

void calcMin(int row, int col)
{
    long long minCost = LLONG_MAX;
    long long tmpCost = 0;
    for(int i = 0; i < row; i++)
    {
        for(int j = 0; j < col; j++)
        {
            tmpCost = calcCost(row, col, i, j);
            if(tmpCost < minCost)
            {
                minCost = tmpCost;
                rtnRow = i;
                rtnCol = j;
            }
        }
    }
}

void calcDiego(int row, int col)
{
    for(int i = 0; i < row; i ++)
    {
        sumOfRow[i] = 0;
        costOfRow[MAX_SIZE] = 0;
    }

    for(int j = 0; j < col; j++)
    {
        sumOfCol[j] = 0;
        costOfCol[MAX_SIZE] = 0;
    }

    for(int i = 0; i < row; i ++)
    {
        for(int j = 0; j < col; j++)
        {
            sumOfRow[i] += arr[i][j];
            sumOfCol[j] += arr[i][j];
        }
    }

    for(int i = 0; i < row; i ++)//cost for moving row j to row i
    {
        for(int j = 0; j < row; j ++)
        {
            if(i == j || sumOfRow[j] == 0)
                continue;
            costOfRow[i] += (abs(j-i)) * sumOfRow[j];
        }
    }

    for(int i = 0; i < col; i ++)//cost for moving col j to col i
    {
        for(int j = 0; j < col; j ++)
        {
            if(i == j || sumOfCol[j] == 0)
                continue;
            costOfCol[i] += (abs(j-i)) * sumOfCol[j];
        }
    }

    int cost = INT_MAX;
    for(int i = 0; i < row; i ++)
    {
        for(int j = 0; j < col; j ++)
        {
            if(costOfRow[i] + costOfCol[j] < cost)
            {
                cost = (costOfRow[i] + costOfCol[j] );
                rtnRow = i;
                rtnCol = j;
            }
        }
    }

}

int main()
{
    int i, j;
    int row, col;
    cout << "INT_MAX\t" << INT_MAX << endl;
    cout << (500ULL*500*500000) << endl;
    while (scanf("%d%d", &row, &col) == 2) {
        for (i = 0; i < row; i++)
        {
            for (j = 0; j < col; j++)
            {
                scanf("%d", &arr[i][j]);
            }
        }
        //printf("calc\n " );
        calcMin(row, col);
        printf("%d %d\n", rtnRow, rtnCol);
        calcDiego(row, col);
        printf("%d %d\n", rtnRow, rtnCol);

    }

    return 0;
}
时间: 2024-08-25 16:37:53

亚马逊 在线测试题目 amazon的相关文章

亚马逊 在线测试题目 amazon (变种的)三叉树的最近公共祖先问题

题目意思就是找一棵按上面链接所示的树对应的上面的两个点的最小公共祖先(LCP,Least Common Father),按照比较大小来依次返回自己的父亲节点就行了.具体看代码:getfather(a)函数是找父亲的代码 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxDepth = 2

亚马逊记AWS(Amazon Web Services)自由EC2应用

很长时间,我听到AWS能够应用,但是需要结合信用卡,最近申请了. 说是免费的,我还是扣6.28,后来我上网查了.认为是通过进行验证.像服务期满将返回. 关键是不要让我进入全抵扣信用卡支付password,验证短信什么的.吓尿了,这后面再收费也不须要统一,不哭死? 所以每一步都心惊胆战,记录下来... 没有多难,大神和土豪直接跳过... 申请一路没什么难度,就没退回去截图记录.从注冊成功后选择服务開始记录. 步骤例如以下: 选择server位置:右上角能够选择server位置.国内日本和新加坡的延

远景能源如何搞定美国的第一个客户?亚马逊AWS你一定知道底细吧

提到能源企业,你脑海里最先浮现的影像是什么?笨重的设备.恶劣的现场操作环境--这都是老黄历了.记者在与远景能源IT总监龚迅交流后发现,虽然远景能源是目前国内装机量最大的智能风机设备提供商之一,传统的风机研发和制造业务仍占据相当重要的地位,但远景能源最擅长的还是风场的全生命周期监控和管理.从业务思路.IT建设.对云服务的理解和使用等角度来衡量,远景能源更像是一家能源领域的互联网公司. 远景能源位于美国硅谷,其全球数字能源创新中心总裁是原思科公司的高管,员工平时工作中可自由地使用云服务,其风电系统的

亚马逊——不一样的电商公司

其一: 电商公司就是电子商务公司.电子商务通俗的说就是利用电子工具进行各种商务活动,如网上购物.在线电子支付等.可以说电子商务是传统商业活动的电子化和网络化.离我们最近的就是网购了,通常我们会在淘宝.天猫.聚美优品.亚马逊等购物平台上购买东西,他们已然成为了我们生活的一部分.但我们不曾留意,他们分别代表着不同的电商公司,拥有不同的理念与策略.下面我们将通过与淘宝的对比,谈一下与众不同的电商公司亚马逊公司. 亚马逊公司,是美国最大的一家网络电子商务公司,于2004年进入中国.再他的发展史上有三次定

亚马逊Q1财报转盈为亏,AWS业绩喜人!

4月24日,亚马逊发布了截至3月31日的2015年第一季度财报.财报显示,亚马逊第一季度净营收达到227.2亿美元,比去年同期的197.4亿美元增长了15%:净亏损为5700万美元,每股亏损为12美分,去年同期为净利润1.08亿美元,每股收益为23美分. 这一业绩虽然符合此前分析师的预期,但是在销售额增长的同时,亚马逊在第一季度中却转盈为亏,难免让人有些许失望. 亚马逊给出的解释是该公司仍在针对多个项目投入大量资金,如无人机送货服务和流媒体视频交易以及仓库建设等,成本的增加显然已经影响到了其盈利

最新亚马逊 Coupons 功能设置教程完整攻略!

最新亚马逊 Coupons 功能设置教程完整攻略! http://m.cifnews.com/app/postsinfo/18479 亚马逊总是有新的创意,新的功能.最近讨论很火的,就是这个 Coupons 的新功能,位于 Advertising 下面新增了 Coupons,如下图. 最新的查找亚马逊差评的方式,就看这篇! 亚马逊查找差评 ,最新再破解干货! 但是群里很多伙伴说自己的账号没看到 Coupons,小编都懂.因为小编的账号也没有(哭). 但是我们找到了新的路径,可以连接到 Coupo

KK亚马逊无货源,他有多好你看了就知道

亚马逊公司(Amazon,简称亚马逊:NASDAQ:AMZN),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图.是网络上最早开始经营电子商务的公司之一,亚马逊成立于1995年,一开始只经营网络的书籍销售业务,现在则扩及了范围相当广的其他产品,已成为全球商品品种最多的网上零售商和全球第二大互联网企业,在公司名下,也包括了AlexaInternet.a9.lab126.和互联网电影数据库(Internet?Movie?Database,IMDB)等子公司.?亚马逊及其它销售商为客户提供数百万

亚马逊拟斥资15亿美元建航空货运中心 - Amazon to spend $1.49 bln on air cargo hub, fans talk of bigger ambitions - ReutersFebruary 1, 2017

2月1日消息,亚马逊本周二宣布将在肯塔基州开建其第一个航空货运中心,以应对高速增长的航空货运需求.亚马逊预计,该项目将带来2000个工作岗位. 据悉,该项计划总投入约为15亿美元,亚马逊或可从当地政府获得4000万美元的税收激励.但亚马逊方面尚未透露项目的相关文件审批进度.值得一提的是,全世界最大的物流中转中心UPS世界港以及FedEx最大的包裹分检中心均在肯塔基州境内. 有知情人士表示,亚马逊的这一措施将减少其对UPS和FedEx等传统货运巨头的依赖,未来有望成为他们的直接竞争对手. 去年,亚

通过SecureCRT访问亚马逊Amazon EC2主机

亚马逊推出了免费的云主机服务器 Amazon EC2,它是通过安全密钥来访问主机的.问题是下载的密钥在SecureCRT 上无法直接使用,需要转换. 下面的方法可以在自己的linux主机上生成securecrt需要的密钥. 首先在 AWS 管理面板中生成密钥对.将密钥上传到一台自己的linux主机,下面举例文件名为 amazon-ec2-key.pem 修改亚马逊提供的密钥文件权限:chmod og-r amazon-ec2-key.pem 改写密钥格式为 OpenSSH,如果询问passphr