Problem 3 基站建设 (station.cpp)———2019.10.6
在此郑重的感激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的更多相关文章
- Problem 1 珠江夜游 (cruise .cpp)———2019.10.6
Problem 1 珠江夜游 (cruise.cpp)[题目描述]小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后,天渐渐 ...
- Problem 2 旅行计划 (travelling .cpp)———2019.10.6
lth tql,lzpclxf tql Orz Problem 2 旅行计划 (travelling.cpp)[题目描述]小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅行时并 ...
- 【csp模拟赛4】基站建设 (station.cpp)
[题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...
- 【转帖】5G基站建设下的“中国速度”:北上广深领跑全国,均超1万个
5G基站建设下的“中国速度”:北上广深领跑全国,均超1万个 https://www.laoyaoba.com/html/news/newsdetail?source=pc&news_id=73 ...
- Problem B. Market(market.c/cpp/pas)
Problem B. Market(market.c/cpp/pas)Time limit: 1 secondsMemory limit: 128 megabytes在比特镇一共有 n 家商店,编号依 ...
- 模拟赛 Problem 2 不等数列(num.cpp/c/pas)
Problem 2 不等数列(num.cpp/c/pas) [题目描述] 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有 ...
- 模拟赛 Problem 1 高级打字机(type.cpp/c/pas)
Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...
- 2019.10 搜索引擎最新排名,Elasticsearch遥遥领先
大数据的搜索平台已经成为了众多企业的标配,Elasticsearch.Splunk(商业上市公司).Solr(Apache开源项目)是其中最为优秀和流行的选择.在2019.10 最新搜索引擎排名中,E ...
- 【2019.10.17】十天Web前端程序员体验(软件工程实践第五次作业)
结对信息.具体分工 Github地址:https://github.com/MokouTyan/131700101-031702425 学号 昵称 主要负责内容 博客地址 131700101 莫多 代 ...
随机推荐
- 浅谈maven setting.xml 设置的mirrorof标签作用。
https://blog.csdn.net/whbing1471/article/details/53983779 A 看这一段 背景:写好的java项目放置到linux服务器上进行编辑的时候,由于m ...
- phoenix kerberos 连接配置
1. 官网资料 Use JDBC to get a connection to an HBase cluster like this: Connection conn = DriverManager. ...
- Entity Framework 学习系列(3) - MySql Code First 开发方式+数据迁移
目录 # 写在前面 一.开发环境 二.创建项目 三.安装程序包 四.创建模型 五.连接字符串 六.编辑程序 七.数据迁移 写在最后 # 写在前面 这几天,一直都在学习Entity Framework ...
- winform+cefSharp实现窗体加载浏览器
1:新建winform项目 2:安装cefSharp 3:配置管理器更改为X86 4:添加引用 using CefSharp; using CefSharp.WinForms; 5:项目启动,打开网页 ...
- 在浏览器中输入 url 地址到显示主页的过程
总体来说分为以下几个过程:1. DNS 解析2. TCP 连接3. 发送 HTTP 请求4. 服务器处理请求并返回 HTTP 报文5. 浏览器解析渲染页面6. 连接结束
- 前端1-----A标签 (锚点)
Title 头部,顶端, 点击跳转到id='abc' 1 2 到百度这里,点击跳转百度 3 到这里了 4 alex1 5 6 根据id 从底部到头 根据id='a1' 到指定位置 ...
- OpenGL 中的三维纹理操作
#define _CRT_SECURE_NO_WARNINGS #include <gl/glut.h> #include <stdio.h> #include <std ...
- jQuery源码学习一: 创建一个jquery实例
前言: jquery是每个前端都会的基础技能,众所周知,jquery返回的是jquery实例方法,但是我们似乎是直接使用$就可以获取到jquery的方法啦,可以在浏览器中判断一下 window.$ 和 ...
- Socket-网络服务提供的一种机制
网络编程 网络通信的要素 Ip,端口,协议(tcp/udp) 127.0.0.1 本机地址 默认主机名:localhost 端口号:用于标识进程的逻辑地址. 有效端口:0-65535 其中 ...
- Spark(火花)快速、通用的大数据处理引擎框架
一.什么是Spark(火花)? 是一种快速.通用处理大数据分析的框架引擎. 二.Spark的四大特性 1.快速:Spark内存上采用DAG(有向无环图)执行引擎非循环数据流和内存计算支持. 内存上比M ...