首页 > 其他分享 >P3355 骑士共存问题

P3355 骑士共存问题

时间:2024-09-28 18:33:58浏览次数:1  
标签:P3355 ok int 共存 lin vis 骑士

P3355 骑士共存问题

我还没学网络流所以先讲二分图的做法,讲述下思路怎么推出来的。

可以发现骑士可达的点的颜色总是与自己的颜色相反,放了这个骑士,周围可达的方格就不能放骑士,要求客房的最多骑士数量,发现这与二分图最大匹配是相同的,所以直接进行分点匹配。

#include <bits/stdc++.h>
#define ll long long 
using namespace std;
const int N=205;
const int M=20005;
int n,m;
int ok[N][N];//障碍 
int one,two;//奇偶点数
int g[N][N]; 
int xx[M],yy[M]; 
int lin[M];
int vis[M];
int dx[N]={1,1,-1,-1,2,2,-2,-2};
int dy[N]={2,-2,2,-2,1,-1,1,-1};
int check(int a){
	int k,q,x,y;
	for(int i=0;i<8;i++){
		x=xx[a]+dx[i];
		y=yy[a]+dy[i];
		k=g[x][y];
		if(x<1||y<1||x>n||y>n||vis[k]||ok[x][y]){//不合法 
			continue;
		}
		vis[k]=1;//遍历过 
		q=lin[k];//他的所属 
		lin[k]=a; //强制连接 
		if(!q||check(q)){//可以匹配到 
			return 1;
		} 
		lin[k]=q;//失配归位 
	}
	return 0;
}
int main() {
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		ok[x][y]=1; 
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(ok[i][j]){//障碍 
				continue;
			}
			if((i+j)&1){//对奇偶性分点 
				g[i][j]=++one;	
				xx[one]=i;
				yy[one]=j;
			} 
			else{
				g[i][j]=++two;
			}
		}
	}
	int ans=n*n-m;//空位数 
	for(int i=1;i<=one;i++){
		if(check(i)){//匹配到了,少空格子 
			memset(vis,0,sizeof vis);
			ans--;
		}
	}
	cout<<ans;
    return 0;
} 

标签:P3355,ok,int,共存,lin,vis,骑士
From: https://www.cnblogs.com/sadlin/p/18438257

相关文章

  • 《勇敢小骑士》游戏闪退弹窗提示“找不到kernel.dll”文件该怎么解决?游戏启动时崩溃提
    当玩《勇敢小骑士》游戏出现闪退并弹窗提示“找不到kernel.dll”文件时,可以在网上搜索可靠的该文件资源进行下载,然后放置到合适的系统目录中。也可尝试检查游戏完整性,看能否自动修复此问题。本篇将为大家带来《勇敢小骑士》游戏闪退弹窗提示“找不到kernel.dll”文件该怎么解决......
  • 阅读周·深入浅出的Node.js | Node产品化,异构共存,发挥产品适应与创新的新效能
    背景去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。没有计划的阅读,收效甚微。新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一本书籍。这个“玩法”虽然常见且板正,但是有效。已读完书籍:《架构简洁之道》。当前阅读......
  • 白骑士的Java教学介绍篇 1.1 Java简介
            欢迎来到Java编程的世界!无论你是编程新手还是有一定经验的开发者,学习Java都将为你打开一个广阔的编程领域。Java作为一种功能强大且广泛使用的编程语言,自诞生以来便以其平台无关性、面向对象的特性和丰富的生态系统赢得了全球开发者的青睐。在本篇博客中,我们将......
  • Docker脚本一键打包java镜像运行备份多端口共存
    效果./docker_build.sh8081后会创建一个新的8081端口容器,并创建一个8081镜像,并备份之前的镜像可以启用多个端口 结构  DockerFile#FROM#基础镜像,当前新镜像是基于哪个镜像的#MAINTAINER#镜像维护者的姓名混合邮箱地址#RUN#容器构建时需......
  • 以MySQL为例,来看看maven-shade-plugin如何解决多版本驱动共存的问题?
    开心一刻清明节那天,看到一小孩在路边烧纸时不时地偷偷往火堆里扔几张考试卷子边烧边念叨:爷爷呀,你岁数大了,在那边多做做题吧,对脑子好,要是有不懂的地方,就把我老师带走,让他教您!前提说明假设MySQL5.7.36的库qsl_datax有表qsl_datax_source和数据CREATETABLE`qsl_datax_source`......
  • 以MySQL为例,来看看maven-shade-plugin如何解决多版本驱动共存的问题?
    开心一刻清明节那天,看到一小孩在路边烧纸时不时地偷偷往火堆里扔几张考试卷子边烧边念叨:爷爷呀,你岁数大了,在那边多做做题吧,对脑子好,要是有不懂的地方,就把我老师带走,让他教您!前提说明假设MySQL5.7.36的库qsl_datax有表qsl_datax_source和数据CREATETABLE`qsl_datax......
  • 白骑士的CSS高级篇之CSS Grid布局进阶 4.1.2 网格模板与区域
            CSSGrid布局是CSS中强大的布局系统之一,它提供了更灵活和更高效的方式来创建复杂的网页布局。通过Grid布局,你可以将网页划分为多个网格区域,并在这些区域中放置内容,这使得布局更加直观和易于维护。本文将深入探讨Grid布局中的网格模板和区域的概念,帮助你掌握如......
  • maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器50
    开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin官网已经介绍的很详细了,我给大家简单翻译一下Thispluginprovidesthecapabilitytopackagetheartifactinanuber-jar,includingitsdependenciesa......
  • maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器
    开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin官网已经介绍的很详细了,我给大家简单翻译一下Thispluginprovidesthecapabilitytopackagetheartifactinanuber-jar,includingitsdependenciesa......
  • maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器
    开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin官网已经介绍的很详细了,我给大家简单翻译一下Thispluginprovidesthecapabilitytopackagetheartifactinanuber-jar,includingitsdependenciesa......