尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
UVa 696 How Many Knights
题目描述在国际象棋中骑士马的攻击方式为水平移动222格、垂直移动111格或水平移动111格、垂直移动222格。给定一个M×NM \times NM×N的棋盘M,N≤500M, N \le 500M,N≤500求最多能放置多少个骑士使得任意两个骑士互不攻击。输入格式多组数据每行两个整数MMM和NNN以0 0结束。输出格式对于每组数据输出一行格式为X knights may be placed on a M row N column board.其中XXX为最大骑士数。样例输入2 3 5 5 4 7 0 0输出4 knights may be placed on a 2 row 3 column board. 13 knights may be placed on a 5 row 5 column board. 14 knights may be placed on a 4 row 7 column board.题目分析本题是经典的“棋盘上放置骑士”问题。骑士的攻击关系构成一个二分图骑士只攻击异色格因此最大独立集 总格数 - 最大匹配数。但由于棋盘可达500×500500 \times 500500×500二分图匹配不可行。但本题有更简单的数学规律若MNM NMN交换MMM和NNN使M≤NM \le NM≤N。若M1M 1M1可以放满所有格子即NNN。若M2M 2M2每444列可放444个两行各222个剩余列按规律放置。若M≥3M \ge 3M≥3可以放置⌈M×N2⌉\lceil \frac{M \times N}{2} \rceil⌈2M×N​⌉个即所有格子的一半上取整因为可以按棋盘染色所有同色格互不攻击骑士攻击异色格。但注意当M3M 3M3且NNN较小时规律略有不同但上述公式仍适用。解题思路若MNM NMN交换MMM和NNN。若M1M 1M1答案N NN。若M2M 2M2答案4×⌊N/4⌋2×min⁡(N mod 4,2) 4 \times \lfloor N/4 \rfloor 2 \times \min(N \bmod 4, 2)4×⌊N/4⌋2×min(Nmod4,2)。否则答案⌈M×N2⌉ \lceil \frac{M \times N}{2} \rceil⌈2M×N​⌉。复杂度分析O(1)O(1)O(1)时间。代码实现// How Many Knights// UVa ID: 696// Verdict: Accepted// Submission Date: 2016-08-25// UVa Run Time: 0.010s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intm,n;while(cinmn){if(m0n0)break;intmaxCounter0;if(m0||n0)maxCounter0;elseif(m1||n1)maxCountermax(m,n);elseif(m2||n2){intnext_mmax(m,n);maxCounternext_m/4*4;next_mnext_m%4;if(next_m2)next_m2;maxCounternext_m*2;}elseif(m3||n3){intnext_mmax(m,n);maxCounternext_m/2*3;if(next_m%21)maxCounter2;}else{introw_counter0,column_counter0;if(m%21){row_countern/2*m;if(n%21)row_counter(m1)/2;}elserow_countern*((m1)/2);if(n%21){column_counterm/2*n;if(m%21)column_counter(n1)/2;}elsecolumn_counterm*((n1)/2);maxCountermax(row_counter,column_counter);}coutmaxCounter knights may be placed on a m row n column board.\n;}return0;}总结本题通过分类讨论得出骑士最大放置数的公式。关键点包括对于M1M1M1或M2M2M2的特殊处理。对于M≥3M \ge 3M≥3利用棋盘染色性质最多放置一半格子上取整。注意MMM和NNN可以互换。该解法是棋盘放置问题的经典结论适合作为数学规律题练习。
RELATED

相关推荐

PCB设计制造与工程实践全解析

PCB设计制造与工程实践全解析

1. PCB基础概念与历史沿革印刷电路板(Printed Circuit Board,简称PCB)是现代电子设备中不可或缺的基础组件。它通过将导电铜箔层压到绝缘基板上,经过蚀刻工艺形成特定电路图案,为电子元器件提供机械支撑和电气连接。这…

📅 2026/8/9 20:10:29
UE5自定义进度条:材质艺术与数学原理深度解析

UE5自定义进度条:材质艺术与数学原理深度解析

1. 项目概述:当进度条遇见材质与数学在虚幻引擎5(UE5)的项目开发中,进度条是一个看似简单却无处不在的UI元素。无论是加载界面、技能冷却,还是任务完成度,它都是玩家与游戏世界进行数值交互最直观的桥梁。然…

📅 2026/9/10 5:08:45
EDA元件Designator与Comment属性详解与应用技巧

EDA元件Designator与Comment属性详解与应用技巧

1. 元件编辑属性中的Designator与Comment基础解析在电子设计自动化(EDA)软件中,每个元件都包含数十种属性参数,其中Designator和Comment是最基础也最容易被误解的两个字段。作为在PCB设计领域工作多年的工程师,我发现很…

📅 2026/7/25 2:15:56
MORE NEWS

更多资讯

📰

SWIOTLB:Linux内核DMA安全缓冲区原理与机密计算实践

1. 什么是SWIOTLB?它不是“软件IO TLB”,而是Linux内核里一块被严重误解的内存安全缓冲区SWIOTLB——全称Software IO Translation and Buffering,中文常被误译为“软件IO TLB”,但这个缩写里的“TLB”根本不是指Translation Look…

📰

CSS Grid vs Flexbox 对比指南:如何为你的布局选择正确的排版方案

CSS Grid vs Flexbox 对比指南:如何为你的布局选择正确的排版方案 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitHub_Trendi…

📰

Bug来了,设备在几百里外,你买机票了吗?

“客户设备在几百里外,Bug来了,你买机票了吗?"这句话,做过项目的兄弟应该都懂。这些问题,你中了几条?设备分散在全国各地,客户催得急,系统升级全靠人工出差;一个版本…

📰

GMM说话人识别原理与MATLAB实现:从MFCC特征到EM训练

简介:一套基于高斯混合模型GMM的说话人身份识别Matlab仿真资源,面向语音信号处理、声纹识别方向的学生、研究人员以及算法初学者,也适合作为课程设计或毕业设计的基础代码。资源覆盖从语音特征提取、GMM模型训练到说话人身份匹配的完整流程&a…

📰

掌握 Agentic RAG:让 AI 自主检索,提升大模型回答精准度

本文深入探讨了Agentic RAG,一种让Agent自主决策检索策略的先进技术。文章指出传统RAG的局限性,如单次检索无回头、单一数据源孤岛等,并提出了四种Agentic RAG模式:路由型、多步型、纠错型和自适应型。通过CRAG实战案例&#xff0…

📰

SpringBoot网络爬虫图书推荐系统设计与实现

1. 项目概述:基于网络爬虫的热门图书推荐系统这个毕业设计项目采用SpringBoot框架构建了一个智能图书推荐系统,核心创新点在于整合了网络爬虫技术实时获取图书数据。系统能够根据用户历史行为和偏好,结合爬取的图书信息,实现个性化…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬