HDU 5046 Airport(DLX反复覆盖)

HDU 5046 Airport(DLX反复覆盖)

大家好,又见面了,我是全栈君。

HDU 5046 Airport

题目链接

题意:给定一些机场。要求选出K个机场,使得其它机场到其它机场的最大值最小

思路:二分+DLX反复覆盖去推断就可以

代码:

#include <cstdio>#include <cstring>using namespace std;const int MAXNODE = 4005;const int MAXM = 65;const int MAXN = 65;const int INF = 0x3f3f3f3f;int K;struct DLX {	int n, m, size;	int U[MAXNODE], D[MAXNODE], R[MAXNODE], L[MAXNODE], row[MAXNODE], col[MAXNODE];	int H[MAXN], S[MAXM];	int ansd, ans[MAXN];	void init(int n, int m) {		this->n = n;		this->m = m;		ansd = INF;		for(int i = 0; i <= m; i++) {			S[i] = 0;			U[i] = D[i] = i;			L[i] = i - 1;			R[i] = i + 1;		}		R[m] = 0; L[0] = m; 		size = m;		for(int i = 1; i <= n; i++)			H[i] = -1;	}	void Link(int r, int c) {		++S[col[++size] = c];		row[size] = r;		D[size] = D[c];		U[D[c]] = size;		U[size] = c;		D[c] = size;		if(H[r] < 0) H[r] = L[size] = R[size] = size;		else {			R[size] = R[H[r]];			L[R[H[r]]] = size;			L[size] = H[r];			R[H[r]] = size;		}	}	void remove(int c) {		for(int i = D[c]; i != c; i = D[i]) {			L[R[i]] = L[i];			R[L[i]] = R[i];		}	}	void resume(int c) {		for(int i = U[c]; i != c; i = U[i])			L[R[i]] = R[L[i]] = i;	}	bool v[MAXNODE];	int f() {		int ret = 0;		for(int c = R[0]; c != 0; c = R[c]) v[c] = true;		for(int c = R[0]; c != 0; c = R[c]) {			if(v[c]) {				ret++;				v[c] = false;				for(int i = D[c]; i != c; i = D[i])					for(int j = R[i]; j != i; j = R[j])						v[col[j]] = false;			}		}		return ret;	}	bool Dance(int d) {		if(d + f() > K) return false;		if(R[0] == 0) {			return d <= K;		}		int c = R[0];		for(int i = R[0]; i != 0; i = R[i]) {			if(S[i] < S[c])				c = i;		}		for(int i = D[c]; i != c; i = D[i]) {			remove(i);			for(int j = R[i]; j != i; j = R[j]) remove(j);			ans[d] = row[i];			if (Dance(d + 1)) return true;			for(int j = L[i]; j != i; j = L[j]) resume(j);			resume(i);		}		return false;	}} gao;typedef long long ll;int T, n;const int N = 65;struct City {	ll x, y;	void read() {		scanf("%I64d%I64d", &x, &y);	}} c[N];ll dis(City a, City b) {	ll dx = a.x - b.x; if (dx < 0) dx = -dx;	ll dy = a.y - b.y; if (dy < 0) dy = -dy;	return dx + dy;}int main() {	int cas = 0;	scanf("%d", &T);	while (T--) {		scanf("%d%d", &n, &K);		for (int i = 1; i <= n; i++) c[i].read();		ll l = 0, r = 100000000000LL;		while (l < r) {			ll mid = (l + r) / 2;			gao.init(n, n);			for (int i = 1; i <= n; i++) {				for (int j = 1; j <= n; j++) {					if (dis(c[i], c[j]) <= mid)						gao.Link(i, j);				}			}			if (gao.Dance(0)) r = mid;			else l = mid + 1;		}		printf("Case #%d: %I64d\n", ++cas, l);	}	return 0;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116190.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++ – 容器(container)的erase()函数

    C++ – 容器(container)的erase()函数

    2021年12月2日
    57
  • pytorch笔记:04)resnet网络&解决输入图像大小问题「建议收藏」

    pytorch笔记:04)resnet网络&解决输入图像大小问题「建议收藏」因为torchvision对resnet18-resnet152进行了封装实现,因而想跟踪下源码(^▽^)首先看张核心的resnet层次结构图(图1),它诠释了resnet18-152是如何搭建的,其中resnet18和resnet34结构类似,而resnet50-resnet152结构类似。下面先看resnet18的源码图1resnet18首先是models.resnet18…

    2022年5月26日
    74
  • 计算机ATA考试详细讲解

    计算机ATA考试详细讲解国计算机信息高新技术考试(CITT)是原劳动部根据中央有关稳妥发展劳动力市场、积极进行职业技能鉴定工作的有关精神,为了适应社会发展和科技进步的需要,提高劳动力素质和促进就业,加强计算机信息技术领域新职业、新工种职业技能的培训考核工作,于1996年,以”劳部发[1996]19号”文件《关于开展计算机信息高新技术培训考核工作的通知》,由劳动和社会保障部职业技能鉴定中心,在全国范围内统一组织实施的社会化职业技能考试。整个考试由劳动保障部职业技能鉴定中心负责题库管理、各省(自治区、直辖市)负责考试的组织、考试站负责

    2022年7月13日
    21
  • QQ空间照片提取_怎么获取QQ的url

    QQ空间照片提取_怎么获取QQ的url对于搞前端开发的人来说,获取qq空间图片的url可谓是轻而易举的事情,我想到的方法有:1.进入qq空间,然后查看网页源代码,然后搜索一下qq号码,然后就知道组装形式了。2.进入qq空间,然后直接F12,然后根据qq空间图像定位到对应的代码处,直接看到组装形式。3.直接对着图片右击,然后复制图片url,哈哈,更简单。

    2022年8月10日
    6
  • avlang php,www.xcnxm.com

    avlang php,www.xcnxm.comDomainName:xcnxm.comRegistryDomainID:2006268495_DOMAIN_COM-VRSNRegistrarWHOISServer:whois.ename.comRegistrarURL:http://www.ename.netUpdatedDate:2016-02-25T06:10:47ZCreationDate:2016-02-2…

    2022年6月12日
    49
  • 强化学习之DQN算法

    强化学习之DQN算法DQN DeepQNetwork 是强化学习中一种强大的算法 DeepMind 团队凭借该算法 让计算机打败了人类围棋 刷新了人们对人工智能的认知 强烈推荐莫烦大神的强化学习入门课程 本文主要参考莫烦大神的课程进行总结 论文 PlayingAtari https arxiv org abs 1312 5602 参考

    2025年8月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号