在此郑重的感激wxyww大佬

wxyww tql

【题目描述】
小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通
信工程建设任务,他们需要在 C 城建设一批新的基站。
C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 列共 64 个街
区,现在已知新基站需要建设在哪些街区,用字符“#”表示,而不需要建设基
站的街区用“.”表示。
爸爸告诉小 Z 说,建设基站最耗时的是基站两两之间互相通信的调试,每
建设一个新的基站,需要确保其与其他已经建好的基站之间能互相通信,若两
个基站的坐标分别为(x1,y1)和(x2,y2),则调试所需时间大概为 max(|x1-
x2|,|y1-y2|),而一个基站的总调试时间为与其他已经建好的基站的调试时间
中的最大值。现在爸爸想考考小 Z,看小 Z 能否计算出如何设计建设基站的顺
序,使得总的调试时间尽量少?

【输入格式】
输入一个 8 行 8 列的矩阵,全部由“#”和“.”组成。
【输出格式】
输出一个整数,表示花费的最少时间。
【样例输入一】
........
........
...#....
.#......
.......#
........
........
........
【样例输出一】
8
【样例输入二】
##..####
#####..#
..#.#...
#..##.##
.#.###.#
####.###
#.#...#.
##....#.
【样例输出二】
168
【数据范围】
设需要建设基站的街区数(即“#”的个数)为 n。

对于 30%的数据,n≤10;
对于 60%的数据,n≤20;
对于 100%的数据,n≤64。

记忆化搜索诶,,,

代码

 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
char mp[][];
int f[][][][],tu[][];
int dfs(int x1,int y1,int x2,int y2);
int suan(int x1,int y1,int x2,int y2,int i1,int j1,int i2,int j2);
int jdz(int x) {
return x>?x:-x;
}
int main() {
freopen("station.in","r",stdin);
freopen("station.out","w",stdout);
memset(f,-,sizeof f);
for(int i=; i<=; i++)
for(int j=; j<=; j++)
cin>>mp[i][j];
for(int i=; i<=; ++i)
for(int j=; j<=; ++j)
tu[i][j] = (mp[i][j]=='#');
/*for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
cout<<tu[i][j]<<" ";
cout<<"\n";
}*/
int ans=dfs(,,,);
cout<<ans;
fclose stdin;
fclose stdout;
return ;
}
int suan(int x1,int y1,int x2,int y2,int i1,int j1,int i2,int j2) {
int sum=;
for(int i=i1; i<=i2; i++)
for(int j=j1; j<=j2; j++)
sum+=(tu[i][j])*max(max(jdz(i-x1),jdz(i-x2)),max(jdz(j-y1),jdz(j-y2)));
return sum;
}
int dfs(int x1,int y1,int x2,int y2) {
if(x1>x2||y1>y2)return ;
if(f[x1][y1][x2][y2]!=-) return f[x1][y1][x2][y2];
int &res=f[x1][y1][x2][y2];
res=suan(x1,y1,x2,y2,x1,y1,x1,y2)+dfs(x1+,y1,x2,y2);
res=min(res,suan(x1,y1,x2,y2,x2,y1,x2,y2)+dfs(x1,y1,x2-,y2));
res=min(res,suan(x1,y1,x2,y2,x1,y1,x2,y1)+dfs(x1,y1+,x2,y2));
res=min(res,suan(x1,y1,x2,y2,x1,y2,x2,y2)+dfs(x1,y1,x2,y2-));
return res;
}

Problem 3 基站建设 (station.cpp)———2019.10.6的更多相关文章

  1. Problem 1 珠江夜游 (cruise .cpp)———2019.10.6

    Problem 1 珠江夜游 (cruise.cpp)[题目描述]小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后,天渐渐 ...

  2. Problem 2 旅行计划 (travelling .cpp)———2019.10.6

    lth tql,lzpclxf tql Orz Problem 2 旅行计划 (travelling.cpp)[题目描述]小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅行时并 ...

  3. 【csp模拟赛4】基站建设 (station.cpp)

    [题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...

  4. 【转帖】5G基站建设下的“中国速度”:北上广深领跑全国,均超1万个

    5G基站建设下的“中国速度”:北上广深领跑全国,均超1万个 https://www.laoyaoba.com/html/news/newsdetail?source=pc&news_id=73 ...

  5. Problem B. Market(market.c/cpp/pas)

    Problem B. Market(market.c/cpp/pas)Time limit: 1 secondsMemory limit: 128 megabytes在比特镇一共有 n 家商店,编号依 ...

  6. 模拟赛 Problem 2 不等数列(num.cpp/c/pas)

    Problem 2 不等数列(num.cpp/c/pas) [题目描述] 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有 ...

  7. 模拟赛 Problem 1 高级打字机(type.cpp/c/pas)

    Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...

  8. 2019.10 搜索引擎最新排名,Elasticsearch遥遥领先

    大数据的搜索平台已经成为了众多企业的标配,Elasticsearch.Splunk(商业上市公司).Solr(Apache开源项目)是其中最为优秀和流行的选择.在2019.10 最新搜索引擎排名中,E ...

  9. 【2019.10.17】十天Web前端程序员体验(软件工程实践第五次作业)

    结对信息.具体分工 Github地址:https://github.com/MokouTyan/131700101-031702425 学号 昵称 主要负责内容 博客地址 131700101 莫多 代 ...

随机推荐

  1. 基于 DNS 动态发现方式部署 Etcd 集群

    使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery.在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discove ...

  2. 给定一个长度为N的数组,找出出现次数大于n/2,n/3的数,要求时间复杂度O(n),空间复杂度O(1)

    先讨论出现次数大于n/2的数字,如果这样的数字存在,那么这个数出现的次数大于其他数出现的次数的总和. 在数组A中,我们定义两个数据集合a1,a2.a1为出现次数大于n/2的数的集合,a2为其余数组成的 ...

  3. ABP 用SMTP 发送163邮件

    /// <summary> /// 发送 /// </summary> /// <param name="Subject">邮件标题</p ...

  4. 2019 荔枝java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.荔枝等公司offer,岗位是Java后端开发,因为发展原因最终选择去了荔枝,入职一年时间了,也成为了面试官,之 ...

  5. python json库

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 1.json库的使用 使用 JSON 函数需要导入 json 库:import jso ...

  6. 【转载】华为荣耀V9的手机录屏功能如何开启

    手机录屏有时候对我们的帮助很大,例如可以录制相应的APP使用教程.微信小程序使用流量讲解视频等,针对于软件开发人员等来说,手机录屏功能针对功能演示视频非常的有帮助.在华为荣耀V9手机中,进行手机录屏有 ...

  7. 排序算法的c++实现——堆排序

    我们利用最大堆可以实现数组从小到大的原址排序,利用最小堆的可以实现对数组从大到小的原址排序. 1  二叉堆的简单介绍: 最大堆与最小堆可以当作通过数组来实现的一个完全二叉树,除了最底层之外其它层都是满 ...

  8. 浅谈布隆过滤器Bloom Filter

    先从一道面试题开始: 给A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL. 这个问题的本质在于判断一个元素是否在一个集合中.哈希表以O(1) ...

  9. 【Netty】Netty的Hello World程序之Discard Server

    一.有关Discard Server的说明 世界上最简单的协议(程序)不是“Hello, World!”而是Discard(丢弃).它是一种丢弃任何接收到的数据而没有任何响应的协议. 要实现丢弃协议, ...

  10. Werkzeug——python web开发工具包

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826062.html 一:Werkzeug是个啥 1)Werkzeug是一个工具包,它封装了很多东西,诸如 ...