游戏
jzoj 5536
题目大意:
给一个范围和一个矩形,让你在这个范围内放若干个这样的矩形(不能改变方向,不能重叠),让你求出最少放多个矩形可以使范围内无法再放矩形
输入样例#1
11 4 3 2
输入样例#2
10 8 3 4
输入样例#3
15 7 4 2
输出样例#1
2
输出样例#2
2
输出样例#3
4
数据范围
70%的数据W⩽100,H⩽100W\leqslant 100,H\leqslant 100W⩽100,H⩽100
100%的数据W⩽30000,H⩽30000W\leqslant 30000,H\leqslant 30000W⩽30000,H⩽30000
解题思路
这就是一道傻逼题!!
让每一个矩阵奉献最大,我们可以像下图红色方块一样放,往上和往左都隔出一个矩形单位的长度,然后我们可以向左上移一点点,这样左上的位置放不下一个矩形,只挪一点点也不会影响右下的,然后我们计算行和列各有多少个就可以了
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int N, M, n, m, ans;
int main()
{scanf("%d%d%d%d", &N, &M, &n, &m);N /= n;//长要多少个M /= m;//宽ans = ((N + 1) / 2) * ((M + 1) / 2);//一个矩形顶两个位置,但是如果多出来一个位置的还是要再放一个矩形printf("%d", ans);return 0;
}