POJ 3020 Antenna Placement 【最小边覆盖】

OpenWRT配置AdGuardHome实现防止DNS污染全局广告拦截 AdGuard Home 是广告拦截与反跟踪软件,可以将广告与追踪相关的域名屏蔽,同时不再需要安装任何客户端。 AdGuard Home 的工作原理是在 DNS 的域名解析过程中拦截网页上的广告。AdGuard Home 支持 DNS over TLS 和 DNS over HTTPS。本文讲解在OpenWRT配置AdGuardHome,实现DNS防污染加快网站解析速度和广告拦截。 一、AdGuardHome安装 建议安装文站提供的固件,或自行查找AdGuardHome.ipk和luci-app. 阅读详情

传送门:http://poj.org/problem?id=3020

Antenna Placement
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 11098 Accepted: 5464

Description

The Global Aerial Research Centre has been allotted the task of building the fifth generation of mobile phone nets in Sweden. The most striking reason why they got the job, is their discovery of a new, highly noise resistant, antenna. It is called 4DAir, and comes in four types. Each type can only transmit and receive signals in a direction aligned with a (slightly skewed) latitudinal and longitudinal grid, because of the interacting electromagnetic field of the earth. The four types correspond to antennas operating in the directions north, west, south, and east, respectively. Below is an example picture of places of interest, depicted by twelve small rings, and nine 4DAir antennas depicted by ellipses covering them. 
 
Obviously, it is desirable to use as few antennas as possible, but still provide coverage for each place of interest. We model the problem as follows: Let A be a rectangular matrix describing the surface of Sweden, where an entry of A either is a point of interest, which must be covered by at least one antenna, or empty space. Antennas can only be positioned at an entry in A. When an antenna is placed at row r and column c, this entry is considered covered, but also one of the neighbouring entries (c+1,r),(c,r+1),(c-1,r), or (c,r-1), is covered depending on the type chosen for this particular antenna. What is the least number of antennas for which there exists a placement in A such that all points of interest are covered? 

Input

On the first row of input is a single positive integer n, specifying the number of scenarios that follow. Each scenario begins with a row containing two positive integers h and w, with 1 <= h <= 40 and 0 < w <= 10. Thereafter is a matrix presented, describing the points of interest in Sweden in the form of h lines, each containing w characters from the set ['*','o']. A '*'-character symbolises a point of interest, whereas a 'o'-character represents open space. 

Output

For each scenario, output the minimum number of antennas necessary to cover all '*'-entries in the scenario's matrix, on a row of its own.

Sample Input

2
7 9
ooo**oooo
**oo*ooo*
o*oo**o**
ooooooooo
*******oo
o*o*oo*oo
*******oo
10 1
*
*
*
o
*
*
*
*
*
*

Sample Output

17
5

Source

 

题意概括:

给一个高为 H 宽为 W 的图案, “  *  ” 表示城市,每个城市可以覆盖 它 上下左右相邻的 其中一个城市,问最好需要多少城市才能把所有城市覆盖。

解题思路:

按照城市编号,然后拆点建图,相邻两个城市可以覆盖的就连边,跑一遍最小边覆盖。

 

AC code:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cmath>
 5 #define INF 0x3f3f3f3f
 6 using namespace std;
 7 const int MAXH = 45;
 8 const int MAXW = 15;
 9 const int MAXN = 500;
10 struct Edge
11 {
12     int v, nxt;
13 }edge[MAXN*MAXN];
14 int head[MAXN], cnt;
15 int linker[MAXN];
16 bool used[MAXN];
17 char str[MAXH][MAXW];
18 int a[MAXH][MAXW];
19 int sum;
20 int H, W;
21 
22 void init()
23 {
24     memset(head, -1, sizeof(head));
25     memset(linker, -1, sizeof(linker));
26     memset(a, 0, sizeof(a));
27     cnt = 0;
28     sum = 0;
29 }
30 
31 void add(int from, int to)
32 {
33     edge[cnt].v = to;
34     edge[cnt].nxt = head[from];
35     head[from] = cnt++;
36 }
37 
38 bool Find(int x)
39 {
40     int v;
41     for(int i = head[x]; i != -1; i = edge[i].nxt){
42         v = edge[i].v;
43         if(!used[v]){
44             used[v] = true;
45             if(linker[v] == -1 || Find(linker[v])){
46                 linker[v] = x;
47                 return true;
48             }
49         }
50     }
51     return false;
52 }
53 
54 int main()
55 {
56     int T_case;
57     scanf("%d", &T_case);
58     while(T_case--){
59         init();
60         scanf("%d%d", &H, &W);
61         for(int i = 0; i < H; i++){
62             scanf("%s", &str[i]);
63             for(int j = 0; j < W; j++)
64                 if(str[i][j]=='*') a[i][j] = ++sum;
65         }
66 
67         for(int i = 0; i < H; i++){
68             for(int j = 0; j < W; j++){
69                 if(a[i][j]){
70                     if(i > 0 && a[i-1][j]) add(a[i][j], a[i-1][j]);
71                     if(i < H-1 && a[i+1][j]) add(a[i][j], a[i+1][j]);
72                     if(j > 0 && a[i][j-1]) add(a[i][j], a[i][j-1]);
73                     if(j < W-1 && a[i][j+1]) add(a[i][j], a[i][j+1]);
74                 }
75             }
76         }
77 
78         int ans = 0;
79         for(int i = 1; i <= sum; i++){
80             memset(used, 0, sizeof(used));
81             if(Find(i)) ans++;
82         }
83         printf("%d\n", sum-ans/2);
84     }
85     return 0;
86 }
View Code

 

openwrt 官方版 安装配置 AdGuard Home + smartdns 告别广告烦扰 教程 软路由实测 系列五 双栈IP优选:双栈优选会自动判断 IPV4 和 IPV6 哪一个更快,优先选择更快的服务,前提运营商必须支持 IPV6。#上游 DNS 服务器:支持 UDP,TCP 协议。配置多个上游 DNS 服务器,包括多个国内外服务器。重定向:用Adguard Home进行重定向,不用选择 "自动设置 Dnsmasq"#测试DNS,发现SmartDNS运行,多次查询,缓存查询的。#首先更改SmartDNS 端口,前面方便测试的.缓存大小:可根据自己的需求填写,比如99999。3 配置: 服务-->SmartDNS。 阅读详情

相关推荐

保姆级教程:在OpenWrt上为家庭网络部署AdGuard Home去广告+DNS优化(附MosDNS v5.3.1一键脚本)

本文提供在OpenWrt上部署AdGuard Home和MosDNS v5.3.1的保姆级教程,实现家庭网络广告拦截与DNS优化。通过详细配置步骤和性能优化技巧,帮助用户构建高效、稳定的智能家庭网关系统,显著提升网络体验。

weixin_42520025的博客 549

【个人笔记】【openwrt篇】AdGuardHome安装及配置

虽然很久未更新了,但是通过手动修改配置,还是可以使用。

gn6201111990的博客 6万+

AdGuardHome安装配置[可运行源码]

本文详细介绍了在NanoPi R4S开发板上安装和配置AdGuardHome的过程。AdGuardHome是一款免费且开源的DNS服务器软件,能够有效拦截广告和跟踪器,保护用户隐私。文章从硬件介绍开始,逐步讲解了如何在OpenWrt系统中安装AdGuardHome,配置DNS重定向,设置上游DNS服务器,以及添加广告过滤规则。通过详细的步骤说明和截图,读者可以轻松完成AdGuardHome的部署,实现局域网内所有设备的广告拦截功能。最后,作者还分享了配置完成后的效果展示,证明了AdGuardHome的高效拦截能力。

软路由:AdGuardHome + OpenWRT 让你家的网络无广告&无跟踪

目录 一、AdGuardHome 简介 二、先展示一下我家使用 AdGuardHome 一个月内的成果 二、如何使用AdGuardHome & AdGuardHome 拦截规则 1、DNS封锁清单 2、目前我订阅的规则 3、自定义过滤规则 一、AdGuardHome 简介 本篇文章分享如何使用AdGuardHome让家里访问到网络 没有广告 没有跟踪。同时在文章下半部分介绍一些比较好的拦截规则。奔着规则来的小伙伴可以直接往下滑。 关于AdGuardHome...

Nelson.Feng 的专栏 8万+

OFDM接收机同步——分组检测

上一篇讲了OFDM发射机中的长短训练序列生成原理,基于此可以得到长短训练序列的准确数值,为接收机中的符号同步中的相关运算提供基础。 进入符号同步前,首先来看OFDM接收机中的第一步——分组检测。分组检测就是检测突发传输方式的信道上是否有新的数据到达,算法的好坏直接影响着接收机的后续工作性能。 一、本文意义 基于《基于xilinx fpga 的ofdm的通信系统基带设计》这本教材中分组检测算法原理,通过matlab编程仿真验证“延时相关+保持长度”分组检测算法的有效性。同时,通过仿真证明教材上的判决公式的问题

boayel的博客 2202

从GitHub到海浪模拟:手把手教你配置WAVEWATCHⅢ 6.07.0的完整开发与测试环境

本文详细指导如何在Ubuntu系统中配置WAVEWATCHⅢ 6.07.0的开发与测试环境,涵盖虚拟机设置、依赖安装、源码编译及案例验证的全流程。通过步骤化教程,帮助科研人员快速搭建高效的海浪模拟平台,提升海洋数值模拟的研究效率。

weixin_42568801的博客 326

poj 3020Antenna Placement 最小边覆盖

//最小边覆盖 //最小边覆盖=最大独立集=n-最大匹配 //这个是在原图是二分图上进行的 //由于此题为无向图 //最小边覆盖=最大独立集=n-最大匹配/2; #include #include #include using namespace std; const int maxn = 45*15; int line[maxn][maxn]; int match[maxn

ijbuhv的专栏 1370

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 648

poj3020 Antenna Placement(无向图最小边覆盖)

http://poj.org/problem?id=3020 题意:给你一个n*m的图,'*'表示城市,每个无线网只能覆盖两个城市,且这两个城市只能东南西北相邻,求最小用多少这样的无线网可以覆盖所有的城市。 ps:做完这道题我感觉英语不好这题就做不出来。。 思路:无向图的最小边覆盖。刚开始各种看不懂题我就不说了= =。一开始一看是矩阵以为和上一道题一样,结果感觉这才是真正

Iguodala的博客 482

基于Godot 4的战术RPG开发:模块化架构与核心系统实现

在游戏开发领域,模块化架构和回合制战斗系统是构建复杂策略游戏的基础。模块化设计通过关注点分离,将游戏逻辑分解为独立、可复用的组件,如数据模型、功能模块和场景,从而提升代码的可维护性和扩展性。回合制战斗系统则依赖于清晰的状态机循环,管理从单位选择、行动决策到伤害结算的完整流程,这是策略游戏体验的核心。这些技术为独立开发者提供了高效起点,能快速验证游戏原型。本文聚焦于一个专为Godot 4引擎设计的开源战术RPG模板,它正是运用了模块化架构和回合制状态机,实现了网格移动、相机控制和基础AI等核心功能。该模板通过

weixin_27021789的博客 617

LDA模型中文文本主题提取丨可视化工具pyLDAvis的使用

主题模型LDA的实现及其可视化pyLDAvis1. 无监督提取文档主题——LDA模型1.1 准备工作1.2 调用api实现模型2. LDA的可视化交互分析——pyLDAvis2.1 安装pyLDAvis2.2 结合gensim调用api实现可视化p.s. 保存结果为独立网页p.p.s. 加快prepare速度?2.3 如何分析pyLDAvis可视化结果2.3.1. **每个主题表示什么意义?**2.3.2 每个主题有多么普遍?2.3.3 主题之间有什么关联? 1. 无监督提取文档主题——LDA模型 这个模型

qq_39496504的博客 6万+

POJ 3020:Antenna Placement:无向图的最小边覆盖

Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6458   Accepted: 3192 Description The Global Aerial Research Centre has been allotted the t

smileyk的专栏 659

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信号方面,常见的格式有RGB888、RGB666、RGB565。为什么有什么多选择,主要还是取决于soc pin脚的多少来定。当然,pin脚越多,显示的颜色就越精准,还原度就越高。 举例来说,假设

嵌入式-老费,一个分享专业嵌入式知识的blog 2795

Poj 3020 Antenna Placement【最小边覆盖 匈牙利算法】

链接: http://poj.org/problem?id=3020 题解: 将每个城市看成顶点,如果一个城市四周存在另一个城市则与这个城市连一条双向边,所以这个题目就变成了求最小边覆盖 无向图最小边覆盖数 = 顶点数 - 最大匹配数/2 #include #include #include #include #include #include #include #in

t51645的博客 292

性能调优秘籍——让OpenClaw运行速度提升10倍(2026优化版)

OpenClaw性能优化核心摘要 本文详细介绍了提升OpenClaw系统性能的关键技术,包括: 使用性能分析器进行代码级性能诊断 内存优化与高效缓存策略 并发处理优化技术 数据库查询性能提升方法 重点内容包括: 全面的性能分析工具实现(计时、内存监控、错误跟踪) 自动生成性能报告和优化建议 操作耗时与内存占用分析算法 关键性能指标(平均耗时、内存增长)计算 通过系统性的性能分析优化,可使OpenClaw运行速度提升10倍以上。

博客 903

YOLOv8改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 348

poj3020 Antenna Placement(无向图最小边覆盖)

题目 给一个w*h(w<=40,h<=10)的由*和o组成的图, 要求用最少的边覆盖图上的所有*,输出边数 思路来源 https://cloud.tencent.com/developer/article/1382396 题解 最小边覆盖裸题 无向图最大匹配=最大匹配数/2, 因为一条匹配边从左端算了一次,从右端算了一次 最小边覆盖=总顶点数-最大匹配 所以,无向图...

小衣同学的博客 255

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ3020 Antenna Placement【二分图最小边覆盖】

题目大意: 在N*M的矩阵中,有K个城市要覆盖无线网。而一个无线网基站只能覆盖左右相邻或是上下相邻的两个 城市。问:至少放置多少个基站,能将这K个城市全部覆盖。输入数据时,'*'表示城市,'o'表示空地。 思路: K个城市作为K个点,编号为1~K。如果有两个城市相邻,则两个城市之间建立一条双向边。现在问题 变为了怎么从图中选择最少的边,使得能够覆盖所有的点。可以用二分图最小边覆盖来做。首先遍历 原图,对K个城市编号,存入iMap[][]数组中。然后建立一个二分图,两边都为K个城市。如果两个城 市有边(即两

程序员充电站(itcharge) 1359

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

POJ 3020 Antenna Placement(无向图最小边覆盖)

poj 3020题目大意 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线? 分析在这道题上卡了很久,才接触二分图也没什么好的思路。这道题需要用到一个定理: 最小路径覆盖数 = 顶点数 - 最大匹配数 下面列举几个二分图问题的常用定理: 定理1:最大匹配数 = 最小点覆盖数(这是

AIDreamer 2206

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

POJ 3020 — Antenna Placement 最小边覆盖

原题:http://poj.org/problem?id=3020 题意: 给出一个n*m的矩阵, ‘ o ’ 表示空地,' * ' 表示城市; 现要这些城市都覆盖无线网,在一些城市建基站,一个基站可以至多覆盖相邻的两个城市(这里的两个城市指建了基站的城市和相邻的一个城市); 问最少需要建立几个基站; 思路: 可以想到是最小路径覆盖; 此处构建二分图并不是简单的把坐标分为X集

吧唧吧唧 619

POJ 3020 Antenna Placement(二分图最小边覆盖)

  题目链接:http://poj.org/problem?id=3020        题意是有一个n*m的地图,图中'*'表示城市,现在要给每个城市覆盖无线,需要安装基站,每个基站最多只能覆盖相邻的两个城市,也就是1*2或者2*1的大小,问最少需要安装多少个基站。        正解就是去求无向图的最小边覆盖,因为我们可以把每个城市记一个编号,然后将相邻的两个城市进行建边,这个一条边就相...

Charles_Zaqdt的博客 286

H - Antenna Placement POJ - 3020(最小边覆盖)

题目链接 解题思路: 最小边覆盖 = 总点数 - 最大匹配数 AC代码: // Test1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // //最小边覆盖,而且最小边覆盖 = 总点数(cnt) - 最大匹配数(ans / 2) ,因为是双向图 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cst

trouble_的博客 175

POJ3020 Antenna Placement【二分图匹配问题——最小边覆盖】

Description The Global Aerial Research Centre has been allotted the task of building the fifth generation of mobile phone nets in Sweden. The most striking reason why they got the job, is their discovery of a new, highly noise resistant, antenna. It is ca

胡小涛的博客 430

POJ 3020 Antenna Placement(最小边覆盖)

其实应该1A的,有个循环上线写错了。#include #include #include using namespace std; const int maxn=500+5; char map[50][50]; int id[maxn][maxn]; bool line[maxn][maxn],used[maxn*maxn]; int gril[maxn*maxn]; int m,n; int c

qq_33901573的博客 232

【POJ - 3020】Antenna Placement (匈牙利算法,二分图最小边覆盖)

题干: The Global Aerial Research Centre has been allotted the task of building the fifth generation of mobile phone nets in Sweden. The most striking reason why they got the job, is their discovery of ...

xuanweiace的博客 528
上一篇: POJ 2771 Guardian of Decency 【最大独立集】
下一篇: 二分图最大权值匹配 KM算法 模板
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值