Thứ Tư, 9 tháng 1, 2019

UVa 00696 - How many Knights * (ad hoc, chess)

Link: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=8&page=show_problem&problem=637
Sol:
#include <cstdio>
#include <algorithm>
using namespace std;
int solve(int n, int m){
if(n > m) swap(n,m);
if(n == 1) return m;
if(n == 2) return m / 4 * 4 + (m % 4 == 1? 2 : (m % 4 >= 2? 4 : 0));
return (n*m + 1) / 2;
}
int main(){
int N,M,ans;
while(true){
scanf("%d %d",&N,&M);
if(N == 0) break;
printf("%d knights may be placed on a %d row %d column board.\n",solve(N,M),N,M);
}
return 0;
}

Không có nhận xét nào:

Đăng nhận xét

Bài G - Educatioal Round 62

Đề bài: Bạn được cho 1 đồ thị vô hướng đặc biệt. Nó bao gồm $2n$ đỉnh được đánh số từ 1 đến 2n. Dưới đây là một số đặc tính của đồ thị: + ...