G - Mysterious Antiques in Sackler Museum

位于北京大学校园内的赛克勒考古与艺术博物馆收藏了超过1万件跨越28万年历史的中国艺术品。其中四块距今20万年的长骨用途成谜,引发了一位考古学者的奇思妙想,他推测这些骨头可能是古代的智商测试工具,只有能将三块骨头拼成一个大长方形的人才被认为是聪明的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sackler Museum of Art and Archaeology at Peking University is located on a beautiful site near the West Gate of Peking University campus, and its architecture takes the inspiration from buildings that already exist on campus. The collection of Chinese art and artifacts currently housed in this new museum contains more than 10, 000 objects and spans a period of 280, 000 years, from Paleolithic hominids and stone tool remains to costumes, ceramics and paintings of the present era. The collection, which is used for teaching and research purposes, has been acquired during the past seventy years from diverse sources. The use of some objects in the museum remains unknown. For example, there are four pieces of rectangular bones which can be dated back to 200, 000 years ago, and no one knows what they were made for. A former NOIer and present ACMer, Mr. Liang in the School of Archaeology and Museology is very interested in those bones, and his tutor told him to use his wildest imagination to guess the usage of them. So, one day, a crazy idea came up to him: were those bones some kind of IQ test tools used by ancient people? Maybe the one who could pick exactly three pieces of those bones to form a larger rectangle was considered smart at that time. So Mr. Liang wanted to write a program to find out how to pass this IQ test imagined by him. Can you also do this?

Input

There are several test cases. The first line of input is an integer T (1 ≤ T ≤ 20), indicating the number of test cases. Each test case is in one line and contains 8 integers describing 4 rectangular bones. Each bone is described by 2 integers indicating its width and height. All integers in the input are between [1, 1000].

Output

For each test case, if Mr. Liang can form a rectangle using those bones in the way he imagined, please print ‘Yes’. If he can’t, print ‘No’ instead. Please note that the area of the new rectangle he forms must be equal to the total area of the bones he picks.

Sample Input

2

1 1 1 1 1 2 2 2

1 1 2 2 10 10 20 20

Sample Output

Yes

No

代码:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
///直接暴力解决,自己看代码应该可以看懂。。
int a[4][2],b[4],n;
int judge(int x,int y,int z)
{
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<2;j++)
        {
            for(int k=0;k<2;k++)
            {
                if(a[x][i]==a[y][j]&&a[y][j]==a[z][k])///三个矩形在一条直线上
                    return 1;
                if(a[x][i]==a[y][j]+a[z][k]&&a[y][j^1]==a[z][k^1])///左边一个,右边两个。
                    return 1;
            }
        }
    }
    return 0;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        for(int i=0;i<4;i++)
        {
            scanf("%d%d",&a[i][0],&a[i][1]);
        }
        for(int i=0;i<4;i++)
        {
            b[i] = i;
        }
        int f = 0;
        do{
            if(judge(b[0],b[1],b[2]))
            {
                f = 1;
                break;
            }
        }while(next_permutation(b,b+4));///按全排列来,当前的顺序的下一个排列顺序。
        printf(f==1?"Yes\n":"No\n");
    }
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值