一千题,No.0027(Phone Desktop)

描述

Little Rosie has a phone with a desktop (or launcher, as it is also called). The desktop can consist of several screens. Each screen is represented as a grid of size 5×3, i.e., five rows and three columns.

There are x applications with an icon size of 1×1 cells; such an icon occupies only one cell of the screen. There are also y applications with an icon size of 2×2 cells; such an icon occupies a square of 4 cells on the screen. Each cell of each screen can be occupied by no more than one icon.

Rosie wants to place the application icons on the minimum number of screens. Help her find the minimum number of screens needed.

输入描述

The first line of the input contains t (1≤t≤104) — the number of test cases.

The first and only line of each test case contains two integers x and y (0≤x,y≤99) — the number of applications with a 1×1 icon and the number of applications with a 2×2 icon, respectively.

输出描述

For each test case, output the minimal number of required screens on a separate line.

用例输入 1 

11
1 1
7 2
12 4
0 3
1 0
8 1
0 0
2 0
15 0
8 2
0 9

用例输出 1 

1
1
2
2
1
1
0
1
1
2
5

提示

The solution for the first test case can look as follows:

Blue squares represent empty spaces for icons, green squares represent 1×1 icons, red squares represent 2×2 icons

The solution for the third test case can look as follows:

 翻译:

描述

小罗茜有一部带桌面(或启动器,也称为启动器)的手机。桌面可以由多个屏幕组成。每个屏幕都表示为大小的网格5×3,即五行三列。

x图标大小为1×1细胞;这样的图标只占据屏幕的一个单元格。还有图标大小为2×2细胞;这样的图标占据了一个正方形4屏幕上的单元格。每个屏幕的每个单元格只能被一个图标占据。

Rosie 希望将应用程序图标放置在最少数量的屏幕上。帮助她找到所需的最小屏幕数量。

输入描述

输入的第一行包含t (1≤≤104) — 测试用例的数量。

每个测试用例的第一行也是唯一的一行包含两个整数x (0≤ x,y≤99) — 具有1×1图标和带有2×2图标。

输出描述

对于每个测试用例,在单独的行上输出所需屏幕的最小数量。

用例输入 1 

11
1 1
7 2
12 4
0 3
1 0
8 1
0 0
2 0
15 0
8 2
0 9

用例输出 1 

1
1
2
2
1
1
0
1
1
2
5

提示

第一个测试用例的解决方案可以如下所示:

蓝色方块表示图标的空白区域,绿色方块表示1×1图标,红色方块代表2×2图标

第三个测试用例的解决方案如下所示:

 解题思路:

 先根据大的判断屏幕,一个屏幕最多俩大的,然后根据小的增加屏幕

c++代码如下:

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        int small,big;
        cin >> small >> big;
        int res = 0;
        res = big/2 + big%2;
        if(small > 15*res - big*4)
        {
            small -= 15*res - big*4;
            res += small/15 + (small%15 != 0);
        }
        cout << res << endl;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值