尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/11/6 22:57:08
UE5自定义进度条:材质艺术与数学原理深度解析

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

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

📅 2026/9/11 19:17:43
EDA元件Designator与Comment属性详解与应用技巧

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

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

📅 2026/10/4 22:08:06
MORE NEWS

更多资讯

📰

电工证考试顺利毕业,良心建议别踩坑

电工证考试顺利毕业,良心建议别踩坑 证书过期了不知道怎么复审延期?别急,这篇文章教你一步步走稳流程,避免因为疏忽影响你的职业发展。尤其是那些已经在驻马店从事公路工程的朋友们,电工证是你从事相关作业的重要“通行证”,千万别让证书过期毁了你的机…

📰

电工证学习app免费怎么转异地?全国通用的电工证你必须知道

电工证学习app免费怎么转异地?全国通用的电工证你必须知道 找工作卡在一道门槛上,你手里没个电工证,面试官连简历都不看。很多人跑来问我,电工证学习app免费怎么转异地?其实,电工证全国通用,关键是你怎么拿到它,怎么用好它。别急,我来给你讲讲…

📰

洱源电工证考试在哪?实操考试心里没底怕挂科?上岗必备全攻略

洱源电工证考试在哪?实操考试心里没底怕挂科?上岗必备全攻略 实操考试心里没底怕挂科?这是很多准备考电工证的朋友的真实写照。尤其是在洱源这样的地区,电工证是 上岗必备 的“通行证”,没有它,连入场都成问题。那问题来了, 洱源电工证考试在哪…

📰

郑州电工证培训几天 良心建议选对机构才不白交钱

郑州电工证培训几天 良心建议选对机构才不白交钱 怕考不过白交培训费?郑州电工证培训几天能考过?这些话不是我说的,是很多学员亲口告诉我的。我带过上百个电工学员,从低压电工到高压电工,从理论到实操,见过太多人因为选错了培训机构,花了钱还考不过,…

📰

电工证如何考试答案怎么报名?证书过期了不知道怎么复审延期

电工证如何考试答案怎么报名?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?你不是一个人,很多从事电工作业的人员都遇到过这个问题,尤其是在三门峡这样的中小型施工企业,电工证是必不可少的“通行证”。一旦证书过期,不仅影响日常作业,…

📰

高淳哪里有电工证复审?郑州报考避坑指南教你少走弯路

高淳哪里有电工证复审?郑州报考避坑指南教你少走弯路 你是不是正为“高淳哪里有电工证复审”发愁?报名渠道太多,真假难辨,怕被中介骗钱,怕走错流程浪费时间?别急,这期郑州报考避坑指南专门为你准备,讲透电工证复审流程,教你避开那些年踩过的坑。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬