AOJ 589.多米诺

Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MB
Total Submission: 34   Submission Accepted: 12

Description

有一个n*m的网格,用一些2*1的多米诺去填充。
有以下规则:
1、每一个多米诺必须完整覆盖两个格子
2、多米诺之间不能重叠
3、多米诺不能超过网格边界
4、摆放多米诺时可以旋转,但是不能斜着摆放
问最多可以用多少个多米诺去覆盖网格。

Input

一个整数 T,表示有 T 组测试数据。(1<=T<=3000)
每组数据输入格式如下:
对于每一组数据,输入如下:
两个整数n,m (1<=n,m<=100000)

Output

对于每一组数据,输出一个整数,表示最多可以摆放的多米诺的数量

Sample Input

Original Transformed
3
1 2
4 2
3 3

Sample Output

Original Transformed
1
4
4

贪心算法?不算贪心算法吧~先竖着摆,尽可能摆满(m*n/2),剩下的位置换个方向尽可能摆(n/2)*(m%2),加起来即可

 1 /*
 2 By:OhYee
 3 Github:OhYee
 4 Email:[email protected]
 5 */
 6 #include <cstdio>
 7 #include <algorithm>
 8 #include <cstring>
 9 #include <cmath>
10 #include <string>
11 #include <iostream>
12 #include <vector>
13 #include <list>
14 #include <queue>
15 #include <stack>
16 using namespace std;
17
18 #define REP(n) for(int o=0;o<n;o++)
19
20
21 int main() {
22     int T,n,m;
23     scanf("%d",&T);
24     while(T--) {
25         scanf("%d%d",&n,&m);
26         printf("%lld\n",(long long)(n / 2)*(long long)m + (long long)
27             (n % 2)*(long long)(m / 2));
28     }
29     return 0;
30 }
时间: 2024-10-13 23:31:54

AOJ 589.多米诺的相关文章

POJ 1135 Domino Effect(最短路 多米诺骨牌)

题意 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推 倒第 1张骨牌,会使其他骨牌连续地倒下(这就是短语"多米诺效应"的由来). 然而当骨牌数量很少时,这种玩法就没多大意思了,所以一些人在 80 年代早期开创了另一个 极端的多米诺骨牌游戏:用上百万张不同颜色.不同材料的骨牌拼成一幅复杂的图案.他们开创 了一种流行的艺术.在这种骨牌游戏中,通常有多行骨牌同时

棋盘的多米诺覆盖:Dimer Lattice Model,Pfaff 多项式,Kasteleyn 定理

这次来介绍计数组合学里面一个经典的问题:Dimer Lattice Model.问题是这样的:一个有 64 个方格的国际象棋棋盘,有多少种不同的多米诺骨牌覆盖?这里的覆盖是指不重复不遗漏地盖住整个棋盘. 下图是一种可能的覆盖方式(图片来自 Wiki 百科): 这个问题的答案是 12988816,非常大的一个数字,绝对不是一个一个数出来的.1961 年德国物理学家 Kasteleyn 借助于线性代数中的一个结论首先解决了这个问题,我们接下来就介绍他的方法. ~~~~~~~~~~~~~~~~~~~~

洛谷 P1282 多米诺骨牌

题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2.每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置. 编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小. 对于图中的例子,只要将最后一个多米诺骨牌旋转180°,可使上下2行点数之差为0. 输入输出格式 输入格式: 输入文件的第一行是一个正

鲁米诺反应

鲁米诺(luminol),又名发光氨.一种在犯罪现场检测肉眼无法观察到的血液,可以显现出极微量的血迹形态(潜血反应).化学名称为3-氨基苯二甲酰肼.常温下是一种黄色晶体或者米黄色粉末,是一种比较稳定的人工合成的有机化合物.化学式为C8H7N3O2,溶液显强酸性,对眼睛.皮肤.呼吸道有一定刺激作用.由于血红蛋白含有铁,而铁能催化过氧化氢的分解,让过氧化氢变成水和单氧,单氧再氧化鲁米诺让它发光.所以鲁米诺广泛应用于刑事侦查.生物工程.化学示踪等领域.

luogu P1282 多米诺骨牌

题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2.每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置. 编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小. 对于图中的例子,只要将最后一个多米诺骨牌旋转180°,可使上下2行点数之差为0. 输入输出格式 输入格式: 输入文件的第一行是一个正

多米诺(codevs 3052)

题目描述 Description 一个矩形可以划分成M*N个小正方形,其中有一些小正方形不能使用.一个多米诺骨牌占用两个相邻的小正方形.试问整个区域内最多可以不重叠地放多少个多米诺骨牌且不占用任何一个被标记为无法使用的小正方形. 输入描述 Input Description 第一行有两个用空格隔开的正整数M和N. 第二行有一个正整数K,表示共有K个小正方形不能使用.输入数据保证K<=M*N. 以下K行每行有两个用空格隔开的数X和Y,表示第X行的第Y个小正方形不能使用. 输出描述 Output D

poj 1717==洛谷P1282 多米诺骨牌

Dominoes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6571   Accepted: 2178 Description A domino is a flat, thumbsized tile, the face of which is divided into two squares, each left blank or bearing from one to six dots. There is a ro

多米诺翻转

我们的问题从一张 $8\times8$ 的国际象棋棋盘开始.棋盘的一个铺砌 $T$,是指用若干$1\times2$ 的多米诺骨牌不重叠不遗漏地盖住棋盘的一种方法.显然在一个铺砌 $T$ 中,每个骨牌恰好盖住一对相邻的方格,因此总共需要 32 张骨牌. 任给一个棋盘的铺砌 $T$,考虑这样一种局部的操作:选择 $T$ 中一个 $2\times2$ 的正方形,它包含一对平行的多米诺骨牌,然后将这对骨牌翻转 90 度,即把一对水平并排放置的骨牌变成垂直并排放置的(或者反之).这样一个操作叫做翻转(fi

FZU 2163 多米诺骨牌

Problem Description Vasya很喜欢排多米诺骨牌.他已经厌倦了普通的多米诺骨牌,所以他用不同高度的多米诺骨牌.他从左边到右边,把n个多米诺骨牌沿一个轴放在桌子上.每一个多米诺骨牌垂直于该轴,使该轴穿过其底部的中心.第i个多米诺骨牌具有坐标xi与高度hi.现在Vasya想要知道,对于每一个多米诺骨牌如果他推倒的话,右侧会有多少个多米诺骨牌也会倒下. 想想看,一个多米诺倒下,如果它严格的触动右侧的多米诺骨牌,被触碰的也会倒下.换句话说,如果多米诺骨牌(初始坐标x和高度h)倒下,会