[HDU]2295 Radar 跳舞链 重复覆盖

ChatGPT Plus完整开通指南:从账号注册到稳定使用全流程 自然语言处理(NLP)技术通过深度学习模型实现对人类语言的理解与生成,其核心原理是基于Transformer架构的大规模预训练。GPT-4作为当前最先进的生成式AI模型,在代码编写、文档分析等场景展现出显著的技术价值。在实际应用中,稳定的网络环境和合规的支付方式是确保AI助手持续服务的关键因素。针对ChatGPT Plus的开通,需要系统性地解决账号验证、虚拟信用卡支付等工程实践问题,才能实现工作流的高效整合。 阅读详情

Radar




 

Problem Description

 

N cities of the Java Kingdom need to be covered by radars for being in a state of war. Since the kingdom has M radar stations but only K operators, we can at most operate K radars. All radars have the same circular coverage with a radius of R. Our goal is to minimize R while covering the entire city with no more than K radars.
 


 

Input

 

The input consists of several test cases. The first line of the input consists of an integer T, indicating the number of test cases. The first line of each test case consists of 3 integers: N, M, K, representing the number of cities, the number of radar stations and the number of operators. Each of the following N lines consists of the coordinate of a city.
Each of the last M lines consists of the coordinate of a radar station.

All coordinates are separated by one space.
Technical Specification

1. 1 ≤ T ≤ 20
2. 1 ≤ N, M ≤ 50
3. 1 ≤ K ≤ M
4. 0 ≤ X, Y ≤ 1000
 


 

Output

 

For each test case, output the radius on a single line, rounded to six fractional digits.
 


 

Sample Input

 

  
1 3 3 2 3 4 3 1 5 4 1 1 2 2 3 3
 


 

Sample Output

 

  
2.236068
 


 

Source

 

The 4th Baidu Cup final


  这道题的大意就是说有m个监控范围一样的雷达, 监控范围为圆形. 现在给出n个城市的二维坐标, 问能否用<=K个雷达覆盖所有城市, 若果能请求出能覆盖的最小的半径.

  又是覆盖问题... 那么要在满足限制的条件下得出最小解, 那一般都是二分答案... 考虑怎么check. 如果二分的是半径, 那么每个雷达能覆盖哪些城市就能够确定... 再看一下数据范围... 搜索可搞. 又要求完全覆盖, 自然想到跳舞链. 雷达为行, 城市为列, 这样就转化模型了. 然后就是裸的重复覆盖.(没要求一个城市只能被一个雷达覆盖).

  对于重复覆盖问题, 与精确覆盖的区别就在于删的方式. 精确覆盖删行, 重复覆盖删列. 比如说选择了c列, 那么就把c列删去, 然后对于选择的某行i, i覆盖了哪些列就把哪些列删去. 之所以不能删行就是因为可以重复覆盖. 但是这样删的力度不大, 就会导致了图会很慢才能变得稀疏. 所以要像A*那样写一个最乐观的估价函数. 如果这个函数返回的值加上当前已经删去的行>K, 那么显然不必要再往更深里搜索了.

#include<bits/stdc++.h>
using namespace std;
const int maxm = 55;
const int maxn = 3e3;
const double eps = 1e-8;
bool vis[maxm];
int n, m, siz, N, M, K, T;
int s[maxm], h[maxm];
int le[maxn], ri[maxn], up[maxn], dw[maxn], col[maxn];
inline void init(const int &r, const int &c) {
	n = r, m = c, siz = m;
	for (int i = 0; i <= m; ++ i) {
		s[i] = 0;
		le[i] = i - 1;
		ri[i] = i + 1;
		up[i] = dw[i] = i;
	}
	ri[m] = 0, le[0] = m;
	for (int i = 1; i <= n; ++ i) h[i] = -1;
}
inline void link(const int &r, const int &c) {
	s[col[++ siz] = c] ++;
	dw[siz] = dw[c], up[dw[c]] = siz;
	dw[c] = siz, up[siz] = c;
	if (h[r] < 0) h[r] = le[siz] = ri[siz] = siz;
	else {
		ri[siz] = ri[h[r]], le[ri[h[r]]] = siz;
		ri[h[r]] = siz, le[siz] = h[r];
	}
}
inline void resume(const int &c) {
	for (int i = dw[c]; i != c; i = dw[i])
		le[ri[i]] = ri[le[i]] = i;	
}
inline void remove(const int &c) {
	for (int i = dw[c]; i != c; i = dw[i])
		le[ri[i]] = le[i], ri[le[i]] = ri[i];
}
inline int Astar() {
	int ret = 0;
	for (int c = ri[0]; c; c = ri[c]) vis[c] = true;
	for (int c = ri[0]; c; c = ri[c])
		if (vis[c]) {
			ret ++;
			vis[c] = false;
			for (int i = dw[c]; i != c; i = dw[i])
				for (int j = ri[i]; j != i; j = ri[j])
					vis[col[j]] = false;
		}
	return ret;
}
bool Dance(int d) {
	if (!ri[0]) return d <= K;
	if (d + Astar() > K) return false;
	int c = ri[0];
	for (int i = ri[0]; i; i = ri[i])
		if (s[i] < s[c]) c = i;
	for (int i = dw[c]; i != c; i = dw[i]) {
		remove(i);
		for (int j = ri[i]; j != i; j = ri[j]) remove(j);
		if (Dance(d + 1)) return true;
		for (int j = le[i]; j != i; j = le[j]) resume(j);
		resume(i);
	}
	return false;
}
struct Point {
	int x, y;
	inline friend double operator * (const Point &r, const Point &s) {
		return sqrt((double)(r.x - s.x) * (r.x - s.x) + (double)(r.y - s.y) * (r.y - s.y));
	}
}a[maxm], b[maxm];
int main() {
	scanf("%d", &T);
	while (T --) {
		scanf("%d%d%d", &N, &M, &K);
		for (int i = 0; i < N; ++ i)
			scanf("%d%d", &a[i].x, &a[i].y);
		for (int i = 0; i < M; ++ i)
			scanf("%d%d", &b[i].x, &b[i].y);
		double lf = 0, rg = 1e8;
		while (rg - lf >= eps) {
			double mid = (lf + rg) / 2;
			init(M, N);
			for (int i = 0; i < M; ++ i)
				for (int j = 0; j < N; ++ j)
					if (b[i] * a[j] < mid - eps)
						link(i + 1, j + 1);
			if(Dance(0)) rg = mid - eps;
			else lf = mid + eps;
		}
		printf("%.6f\n", lf);
	}	
}


VFIO框架源码分析(一)- 从初始化到设备访问 本文深入剖析了Linux内核中的VFIO(Virtual Function I/O)框架,详细解读了其从初始化到设备访问的全过程。VFIO通过Container->Group->Device的层次化设计,利用IOMMU提供安全隔离,允许用户空间直接访问物理设备。文章基于Linux v5.15版本,重点分析了vfio_init模块入口、Container创建与配置、Group关联以及最终设备访问等关键环节,揭示了VFIO如何通过逐层授权机制构建安全可靠的设备直通模型,为虚拟化技术提供核心支持。 阅读详情

相关推荐

TBOX(Telematics Box)在智能网联汽车中的核心功能与应用场景解析

TBOX(Telematics Box)是智能网联汽车的“中枢神经”,基于Android或Linux操作系统,并通过CAN总线与车辆深度交互。它实现了远程控制、车辆状态监控、OTA升级及紧急呼叫(E-CALL)等核心功能,是提升用车安全、便利性与实现车辆持续进化的关键技术组件。

weixin_29158413的博客 800

HDU - 2295 重复覆盖+二分

题目:给你N个城市,M雷达,你可以选择K个雷达,雷达有一个覆盖半径R,你需要确定最小的R,使得每个城市都被雷达覆盖 思路:二分R 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include

ACVevtor的博客 395

三级等保网络拓扑图实战:从零搭建符合标准的医院安全架构

本文详细阐述了如何从零开始设计并搭建符合三级等保标准的医院网络安全架构。文章基于“一个中心,三重防护”的核心框架,深入解析了医院网络分区设计、安全域划分、关键安全设备选型与配置等实战要点,并提供了绘制专业网络拓扑图的技巧与等保测评准备指南,旨在帮助医院IT人员系统化地构建既合规又实用的纵深防御体系。

weixin_29326909的博客 502

Hdu 2295 (二分+重复覆盖问题 Dancing Links)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2295   题意:给出一些城市及一些雷达的坐标,要求从这些雷达中选取最多k个能够覆盖所有的城市,问雷达的最小覆盖半径为多少。   二分半径,则可转化为一个判定问题,即给定雷达的

dooder_daodao的专栏 1248

软考中级-系统集成项目管理工程师**的超详细知识点笔记。

软考中级系统集成项目管理工程师核心知识点摘要 综合知识:涵盖信息化基础(国家信息化六要素、信息系统开发方法)、系统集成特点(高技术性、团队协作)、IT服务管理(ITIL流程)、网络技术(OSI模型、TCP/IP)、信息安全(CIA三要素、加密技术)、软件工程(生命周期、测试类型)、面向对象分析与设计(UML图)、新一代信息技术(云计算、大数据、物联网)。 案例分析:聚焦项目管理十大知识领域,重点包括: 整体管理(项目章程、变更控制流程) 范围管理(WBS分解、需求跟踪矩阵) 进度管理

最爱で毛毛熊的博客 1986

STM32F407+LAN8720网口不通?别慌,手把手教你用CubeMX和LWIP搞定RMII以太网(附复位与PHY地址避坑指南)

本文详细解析了STM32F407与LAN8720通过RMII接口实现以太网通信的完整流程,重点解决了网口不通的常见问题。从硬件连接到CubeMX配置,再到LWIP网络参数设置,提供了复位时序、PHY地址配置等关键细节的避坑指南,帮助开发者快速排查和解决以太网通信故障。

weixin_33695082的博客 419

hdu2295-舞蹈链

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2295 DescriptionN cities of the Java Kingdom need to be covered by radars for being in a state of war. Since the kingdom has M radar sta...

测试 387

【银河麒麟服务器操作系统】安装英伟达4090D显卡驱动操作指南

本文详细介绍了在银河麒麟高级服务器操作系统V10SP3-2403-X86版本上安装NVIDIA RTX4090D显卡驱动的完整流程。主要内容包括:准备工作检查、开源驱动禁用、运行级别切换、依赖包安装以及交互式安装过程中的关键选项选择(32位库选Yes、X配置选No)。通过禁用nouveau驱动、重建内核引导等步骤确保驱动安装成功,最后通过nvidia-smi命令验证驱动安装情况。文档提供了操作检查表和安装流程图,帮助用户在银河麒麟系统上顺利完成显卡驱动部署。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3096

HDU - 2295 (Radar)

题意:给定平面上 n个城市和 m个雷达站的坐标,现在只有 k 名操作员来控制雷达(k<=m,一人一站),求最小的雷达半径,使得k名操作员合理选择k个雷达站的情况下可以覆盖所有的城市; 分析:明显的精确覆盖问题,因为是求最小半径,所以肯定有解,那么二分半径再套用Dancing Links判断当前半径下是否满足条件就可以了; 代码: #include<cmath&...

Joker & Liar的博客 334

Linux内核vmlinuz文件:了解和编程

vmlinuz文件是Linux操作系统中的内核镜像文件。它包含了Linux内核的压缩版本,用于引导和启动操作系统。vmlinuz文件通常是一个zImage格式的压缩内核镜像,其中包含了操作系统所需的核心功能和驱动程序。vmlinuz文件的名称可能会因Linux发行版和版本而有所不同,但它们的作用是相同的。在某些发行版中,vmlinuz文件可能被重命名为vmlinux或bzImage。

PixelDyno的博客 1350

CAM350常用快捷键

CAM350快捷键 CAM350常用快捷键

bhxc809751502的博客 3052

[ACM] HDU 2295 Radar (二分+DLX 重复覆盖)

Radar Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2593    Accepted Submission(s): 1012 Problem Description   N cities of the Jav

逆风的方向 更适合飞翔 2488

c\c++: Identifiers, modifier, qualifier, specifier, decorator; systemtap

文章目录参考英语含义在c、C++ 参考 c++ 标准 https://blog.youkuaiyun.com/tyronne/article/details/44016621 英语含义 modifier word or phrase that modifies (modify 2) another word or phrase 修饰语. qualifier (grammar) word, esp an adjective or adverb, that qualifies another word 修饰词; (尤指)形

mzhan017的博客 2421

HDU2295_Radar _DLX跳舞链的重复覆盖

题意给出 N 个城市, M 个雷达的坐标。要求选择不超过 K 个雷达覆盖 N 个城市,求雷达覆盖面积的最小值(雷达覆盖面积相等)。

弱的奋斗之旅 370

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

kuangbin三Dancing Links合集

Dancing Links,跳舞链,是一种数据结构以及配套的算法,用于解决精确覆盖问题与重复覆盖问题。具体讲解博客链接: https://www.cnblogs.com/grenet/p/3145800.html https://www.cnblogs.com/wujiechao/p/5767124.html ZOJ3029 Treasure Map: #include &amp;lt;io...

Izayoi_w的博客 295

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

hdu2295(DLX重复覆盖)

很容易想到,二分答案。 每次根据半径建好0,1矩阵。 然后就是DLX可重复覆盖的模板 #include #include #include double x[55],y[55],X[55],Y[55]; const int MN=1005; const int MM=1005; const int MNN=1e5+5+MM; //最大点数 const double eps = 1e-9; i

constbh的博客 398

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HDU 2295 Radar(舞蹈链+二分)

RadarTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4292    Accepted Submission(s): 1657Problem DescriptionN cities of the Java Kingdom need to...

albertluf的博客 297

HDU2295--Radar(Dancing Links)

Problem Description N cities of the Java Kingdom need to be covered by radars for being in a state of war. Since the kingdom has M radar stations but only K operators, we can at most operate K rada

SCUT_Pein 857

HDU 2295 舞蹈链可重复覆盖+二分

点击打开链接 题意:给了n个点和m个圆心,在用不多于k个圆的情况下,使得所有的点被覆盖,最小的圆半径多大 思路:问最小的什么什么那么用二分准没错,那么二分条件是什么呢,就是用不多于K的圆能否将所有点覆盖,覆盖这部分就是裸的舞蹈链的可重复覆盖,行为m个圆,列为n个点,然后求出的最少行小于等于K,则成立,否则不成立#include #include #include #include #i

Dan__ge的博客 2258

[Codeforces]696D Legen... AC自动机 + 矩阵快速幂

D. Legen... time limit per test 6 seconds memory limit per test 256 megabytes input standard input output standard output Barney was hanging out with Nora for a while an

Le Petit Prince 1045

[BZOJ]2219 数论之神 离散对数 + 原根

2219: 数论之神Time Limit: 3 Sec Memory Limit: 259 MB Submit: 1052 Solved: 322 [Submit][Status][Discuss] Description在ACM_DIY群中,有一位叫做“傻崽”的同学由于在数论方面造诣很高,被称为数轮之神!对于任何数论问题,他都能瞬间秒杀!一天他在群里面问了一个神题: 对于给定的3个非负整

Le Petit Prince 973

[BZOJ]2427 软件安装 O(nm)树形背包

2427: [HAOI2010]软件安装 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1913  Solved: 757 [Submit][Status][Discuss] Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi。我们希望从中选择一些软件安装到一台磁盘容量为M计算机

Le Petit Prince 940

[BZOJ]4709 柠檬 DP单调性优化 + 单调栈

4709: [Jsoi2011]柠檬 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 252  Solved: 111 [Submit][Status][Discuss] Description Flute 很喜欢柠檬。它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬。贝壳一共有 N (1 ≤ N  ≤ 100,000)

Le Petit Prince 910

[BZOJ]3159 决战 LCT&Splay

3159: 决战 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 420  Solved: 183 [Submit][Status][Discuss] Description Input 第一行有三个整数N、M和R,分别表示树的节点数、指令和询问总数,以及X国的据点。 接下来N-1行,每行两个整数X和Y,表示Kat

Le Petit Prince 876

[BZOJ]4555 [TJOI2016&HEOI2016] 求和 第二类斯特林数 + NTT

4555: [Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 525  Solved: 418 [Submit][Status][Discuss] Description 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心。 现在他想计算这样一个函数的值: S(i, j)表示第二

Le Petit Prince 849

[BZOJ]2179 FFT快速傅立叶 FFT模板

2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 3709  Solved: 1970 [Submit][Status][Discuss] Description 给出两个n位10进制整数x和y,你需要计算x*y。 Input 第一行一个正整数n。 第二行描述一个位数为n的正整数x。 第三行描述一个

Le Petit Prince 813
上一篇: [ZOJ]3209 Treasure Map 跳舞链 精确覆盖
下一篇: [UVA]1391 Astronauts 2-Sat 朝花夕拾
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值