Light oj 1010 - Knights in Chessboard
2015-08-15 18:41
323 查看
1010 - Knights in Chessboard
Given an m x n chessboard where you want to placechess knights. You have to find the number of maximum knights that can beplaced in the chessboard such that no two knights attack each other.
Those who are not familiar with chess knights, note that achess knight can attack8 positions in the board as shown in the picturebelow.
Each case contains two integers m, n (1 ≤ m, n≤ 200). Here m and n corresponds to the number of rows and the numberof columns of the board respectively.
题目大意:在N*M的棋盘上走"日"字,问最多能放多少批马,无冲突
PDF (English) | Statistics | Forum |
Time Limit: 1 second(s) | Memory Limit: 32 MB |
Those who are not familiar with chess knights, note that achess knight can attack8 positions in the board as shown in the picturebelow.
Input
Input starts with an integer T (≤ 41000),denoting the number of test cases.Each case contains two integers m, n (1 ≤ m, n≤ 200). Here m and n corresponds to the number of rows and the numberof columns of the board respectively.
Output
For each case, print the case number and maximum number ofknights that can be placed in the board considering the above restrictions.Sample Input | Output for Sample Input |
3 8 8 3 7 4 10 | Case 1: 32 Case 2: 11 Case 3: 20 |
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int n,m; int main() { int i,j,k,s; int cla; scanf("%d",&cla); for(int gr=1;gr<=cla;gr++) { scanf("%d%d",&n,&m); printf("Case %d: ",gr); if(n==1||m==1)//情况的特判 { printf("%d\n",max(n,m)); continue; } if(n==2||m==2)//情况特判 { s=m*n/8*4;//<span id="transmark"></span>当 n==2&&m==2时可以全部放满,否则必须留下左右两边或者左边或者右边一个田字格。来进行和其他的格子相隔开 if((m*n)%8==2)//如果%8为2不够一个田字,则+2 s+=2; else if((m*n)%8==6||(m*n)%8==4)//如果够4个则+4,只有取余为2,4,6而无其他情况因为*了4 s+=4; printf("%d\n",s); } else printf("%d\n",(m*n+1)/2);//+1则适用于所有奇偶 } return 0; }
相关文章推荐
- Codeforces 380C. Sereja and Brackets(模拟啊)
- Mac 安装Android Studio
- var a={}什么意思
- sscanf用法详解
- PAT (Basic Level) Practise (中文)1001. 害死人不偿命的(3n+1)猜想
- Tcp通信中服务器处理客户端意外断开!
- git 命令别名配置
- Cocos2d-x过程动作CCProgressTo示例学习笔记
- 使用AsyncTask异步更新UI界面
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- HDU 2473-Junk-Mail Filter-并查集删除
- CentOS 7 安装Nginx做反向代理
- HDU 1061 Rightmost Digit
- 7 Types of Regression Techniques you should know!
- linuix 添加、删除用户
- linux 修改root密码以及忘记root密码
- Eclipse中的Web项目自动部署到Tomcat
- Ubuntu makefile操作
- JavaSE基础--(二)IO部分
- VirtualBox中centos安装增强功能报错解决办法