亚马逊 在线测试题目 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 = ;
for(int i = ; i < row; i++)
{
for(int j = ; j < col; j++)
{
if(arr[i][j] != )
{
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 = ;
for(int i = ; i < row; i++)
{
for(int j = ; 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 = ; i < row; i ++)
{
sumOfRow[i] = ;
costOfRow[MAX_SIZE] = ;
} for(int j = ; j < col; j++)
{
sumOfCol[j] = ;
costOfCol[MAX_SIZE] = ;
} for(int i = ; i < row; i ++)
{
for(int j = ; j < col; j++)
{
sumOfRow[i] += arr[i][j];
sumOfCol[j] += arr[i][j];
}
} for(int i = ; i < row; i ++)//cost for moving row j to row i
{
for(int j = ; j < row; j ++)
{
if(i == j || sumOfRow[j] == )
continue;
costOfRow[i] += (abs(j-i)) * sumOfRow[j];
}
} for(int i = ; i < col; i ++)//cost for moving col j to col i
{
for(int j = ; j < col; j ++)
{
if(i == j || sumOfCol[j] == )
continue;
costOfCol[i] += (abs(j-i)) * sumOfCol[j];
}
} int cost = INT_MAX;
for(int i = ; i < row; i ++)
{
for(int j = ; 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**) << endl;
while (scanf("%d%d", &row, &col) == ) {
for (i = ; i < row; i++)
{
for (j = ; 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 ;
}
亚马逊 在线测试题目 amazon的更多相关文章
- 亚马逊 在线测试题目 amazon (变种的)三叉树的最近公共祖先问题
题目意思就是找一棵按上面链接所示的树对应的上面的两个点的最小公共祖先(LCP,Least Common Father),按照比较大小来依次返回自己的父亲节点就行了.具体看代码:getfather(a) ...
- 亚马逊记AWS(Amazon Web Services)自由EC2应用
很长时间,我听到AWS能够应用,但是需要结合信用卡,最近申请了. 说是免费的,我还是扣6.28,后来我上网查了.认为是通过进行验证.像服务期满将返回. 关键是不要让我进入全抵扣信用卡支付passwor ...
- 最新亚马逊 Coupons 功能设置教程完整攻略!
最新亚马逊 Coupons 功能设置教程完整攻略! http://m.cifnews.com/app/postsinfo/18479 亚马逊总是有新的创意,新的功能.最近讨论很火的,就是这个 Coup ...
- [转]Amazon AWS亚马逊云服务免费一年VPS主机成功申请和使用方法
今天部落将再次为大家介绍如何成功申请到来自亚马逊的Amazon AWS免费一年的VPS主机服务.亚马逊公司这个就不用介绍了,是美国最大的一家网络电子商务公司,亚马逊弹性计算云Amazon EC2更是鼎 ...
- 在亚马逊amazon的AWS上安装Node和MongoDB服务器
在亚马逊amazon的AWS上安装Node和MongoDB服务器 在建立AWS上账号.创建EC2 ,用putty链接上之后,就可以用下面的方法开始安装. !!! 如果不是是自己建立的EC2, 而是由B ...
- 亚马逊云服务器VPS Amazon EC2 免费VPS主机配置CentOS及其它内容
Amazon目前提供为期一年的免费VPS服务,可到地址http://aws.amazon.com 进行申请. 现在对账号申请成功后,对VPS主机配置CentOS的过程做个图文介绍 1.创建实例(Ins ...
- 通过SecureCRT访问亚马逊Amazon EC2主机
亚马逊推出了免费的云主机服务器 Amazon EC2,它是通过安全密钥来访问主机的. 问题是下载的密钥在SecureCRT 上无法直接使用,需要转换. 下面的方法可以在自己的linux主机上生成sec ...
- http://aws.amazon.com/cn/ses/ 亚马逊 营销性非事务邮件发送平台
http://aws.amazon.com/cn/ses/ 亚马逊 营销性非事务邮件发送平台
- Android支付接入(八):Amazon亚马逊支付
下面跟大家一起走一遍Amazon亚马逊的支付,亚马逊目前刚把业务拓展到大陆市场,但这并不代表Amazon支付不成熟,恰恰相反,Amazon的支付流程,支付结果获取及测试另人称赞,支付流程.测试流程简洁 ...
随机推荐
- php框架学习的步骤
一,选择一个合适的php框架 在国内,使用zf,ci和tp框架的人比较多,新手可以从中选一个去学习,新手不建议一开始就去学习zf,功力还不够深,学习zf会让你更迷茫. 二,选定一个php框架之后,如何 ...
- Delphi 2010初体验,是时候抛弃Delphi 7了
Delphi 2010已于近日由Embarcadero公司发布.作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能.它的使用感受以及对Delph ...
- R语言的日期运算
写hive SQL查询, 需要从导入的参数, 自动累加日期. 从而实现一个自动的,多个日期的统计过程 R语言的日期运算超级简单. > test<-Sys.Date() > test ...
- ok6410的madplay配置
二.移植嵌入式播放器 madplay madplay 播放器程序主要依赖于如下库: zlib zlib-1.1.4.tar.gz 提供数据压缩用的函式库 libid3tag libid3tag- ...
- 2.css选择器
由第一节的语法结构可以看出css语言的核心思想就是:找到对象,然后对选定的对象进行属性赋值.其中,css中对象的选择,依靠的就是选择器.当掌握了选择器以后,就能够指哪打哪,弹无虚发了. css的选择器 ...
- python ssh
使用python包paramiko实现通过ssh的安全远程访问 使用pip下载安装paramiko,提示会缺一个crypto包,用pip将这个包也安好,python就可以正常引用paramiko了 一 ...
- TeXworks代码补全功能
使用Tab键会自动补全(实在是太TM的方便了) 比如:
- C# 将DataTable装换位List<T> 泛型
public List<T> GetList<T>(DataTable dt) where T:new() { List<T> DateLists = new Li ...
- 排序 选择排序&&堆排序
选择排序&&堆排序 1.选择排序: 介绍:选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始 ...
- Swift function how to return nil
这两天在学习Stanford出品的iOS7的课程,这个课程去年也看过,但是看到第3课就不行了,满篇的OC,把人都搞晕了.这段时间因为要写个iOS的App,正好赶上了Swift问世,所以趁着这股劲继续学 ...