互娱C++岗 秋招笔试题

互娱C++岗 秋招笔试题
第二题:
//求解重叠矩形的组合面积

#include<bits/stdc++.h>
using namespace std;

typedef struct Rect
{
    int x1;
    int y1;
    int x2;
    int y2;
    // Rect(int x1, int y1, int x2, int y2):
    //     x1(x1), y1(y1), x2(x2), y2(y2) {}
} Rect;

bool isover(const Rect &r1, const Rect &r2)
{
    if(r1.x2 > r2.x1 && r2.x2 > r1.x1 && r1.y2 > r2.y1 && r2.y2 > r1.y1) return true;
    else
        return false;
}

int main()
{
    int T,n;
    cin>>T;
    while(T--)
    {
        cin>>n;
        vector<Rect> a(n+2);
        int ans = 0;
        for(int i=0; i<n; i++)
        {
            cin>>a[i].x1>>a[i].y1>>a[i].x2>>a[i].y2;
            //ans += (a[i].x2-a[i].x1)*(a[i].y2 - a[i].y1);
        }

        int area;
        for(int i=0; i<n-1; i++)
        {
            for(int j=i+1; j<n; j++)
            {
                if(isover(a[i], a[j]) == true)
                {
                    ans += (a[i].y2 - a[i].y1) * (a[i].x2 - a[i].x1);
                    ans += (a[j].y2 - a[j].y1) * (a[j].x2 - a[j].x1);
                  //  cout<<ans<<endl;
                  //考虑两个矩形左下角坐标的大小和右上角坐标的大小
                    if(a[i].x1 >= a[j].x1 && a[i].y1 >= a[j].y1 && a[i].x2 >= a[j].x2 && a[i].y2 >= a[j].y2)
                    {
                        area = (a[j].y2-a[i].y1) * (a[j].x2 - a[i].x1);
                        ans -= area;
                    //    cout<<"ans1:"<<ans<<endl;

                    }else if(a[i].x1 >= a[j].x1 && a[i].y1 >= a[j].y1 && a[j].x2 >= a[i].x2 && a[j].y2 >= a[i].y2){
                        area = (a[i].y2-a[i].y1) * (a[i].x2 - a[i].x1);
                        ans -= area;
                    //    cout<<"ans2:"<<ans<<endl;
                    }
                    else if(a[j].x1 >= a[i].x1 && a[j].y1 >= a[i].y1 && a[j].x2 >= a[i].x2 && a[j].y2 >= a[i].y2){
                        area = (a[i].y2-a[j].y1) * (a[i].x2 - a[j].x1);
                        ans -= area;
                    }
                    else{
                        area = (a[j].y2-a[j].y1) * (a[j].x2 - a[j].x1);
                        ans -= area;
                    }
                }
                else
                {
                    continue;
                }
            }
        }

        cout<<ans<<endl;
    }
    return 0;
}

/*
2
4
0 0 2 2
1 1 4 3
2 4 4 7
2 5 3 6
3
0 0 1 1
1 1 2 2
1 0 2 1


输出:
15
0
*/


全部评论
看着就觉得难啊
点赞 回复 分享
发布于 2022-09-02 20:57 陕西

相关推荐

来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务