hdu-6665 暴力模拟或离散化坐标+bfs

 

题目链接

题意:给你两个矩形的左下和右上坐标,问这两个矩形将平面分成了几个区域。

思路:1.可能存在的状态有2 3 4 5 6直接模拟坐标状态输出对应值就行了,情况有点多,可能会出现考虑不完全。

 

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std;
int x[5], y[5];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
//        int mx=0, my=0, mix=1000000001,miy=1000000001;
        for(int i=1; i<=4; i++)
            scanf("%d%d",&x[i],&y[i]);
        if((max(x[2],x[4])-min(x[1], x[3]) >= x[2]-x[1]+x[4]-x[3]) || (max(y[2],y[4])-min(y[1], y[3]) >= y[2]-y[1]+y[4]-y[3]))
            puts("3");
        else if(x[1]==x[3] && x[2]==x[4] && y[1]==y[3] && y[2]==y[4]) puts("2");
        else if((x[3]<=x[1] && y[2]<=y[4] && x[2] <= x[4] && y[3]<=y[1]) || (x[3]>=x[1] && y[2]>=y[4] && x[2] >= x[4] && y[3]>=y[1]))
        {
            if((x[1]==x[3] && x[2] == x[4] && y[1]!=y[3] && y[2]!=y[4])||(y[1]==y[3] && y[2] == y[4] && x[1]!=x[3] && x[2]!=x[4]))
                puts("4");
            else puts("3");
        }
        else{
            if((y[1]<y[3] && y[2]>y[4] && x[3]<x[1] && x[4]>x[2]) ||(y[1]>y[3] && y[2]<y[4] && x[3]>x[1] && x[4]<x[2])) puts("6");
            else if((y[1]==y[3] && y[4]>y[2] && x[1]<x[3] && x[2]>x[4])||(y[1]==y[3] && y[4]<y[2] && x[1]>x[3] && x[2]<x[4]))
                puts("5");
            else if((y[2]==y[4] && y[1]>y[3] && x[1]<x[3] && x[2]>x[4])||(y[2]==y[4] && y[1]<y[3] && x[1]>x[3] && x[2]<x[4]))
                puts("5");
            else if((y[2]<y[4] && y[1]>y[3] && x[1]<x[3] && x[2]==x[4])||(y[2]>y[4] && y[1]<y[3] && x[1]>x[3] && x[2]==x[4]))
                puts("5");
            else if((y[2]>y[4] && y[1]<y[3] && x[1]==x[3] && x[2]<x[4])||(y[2]<y[4] && y[1]>y[3] && x[1]==x[3] && x[2]>x[4]))
                puts("5");
            else puts("4");
        }
    }
    return 0;
}

           2. 坐标值会很大,所以将其离散到10*10以内,标记矩形边,bfs10*10,输出bfs次数(离散化坐标后乘2是的矩形内存在0)

#include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <vector>
#define mems(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
struct node
{
    ll x,y;
} s[5];
int vis[14][14];
int go[4][2]={1,0,-1,0,0,1,0,-1};
vector<ll>X,Y;
void Hash(node &s)
{      //离散坐标从1开始
    s.x=lower_bound(X.begin(),X.end(),s.x)-X.begin()+1;
    s.y=lower_bound(Y.begin(),Y.end(),s.y)-Y.begin()+1;
}
void bfs(int x,int y)
{

    queue<node>q;
    node now,to;
    now.x=x;
    now.y=y;
    vis[x][y]=1;
    q.push(now);
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        for(int i=0;i<4;i++)
        {
            to.x=now.x+go[i][0];
            to.y=now.y+go[i][1];
            if(to.x<0||to.y<0||to.x>10||to.y>10||vis[to.x][to.y])
                continue;
            vis[to.x][to.y]=1;
            q.push(to);
        }
    }
}
int main()
{

    int t;
    scanf("%d",&t);
    while(t--)
    {
        mems(vis,0);
        X.clear();
        Y.clear();
        for(int i=1; i<=4; i++)
        {
            cin>>s[i].x>>s[i].y;
            X.push_back(s[i].x);
            Y.push_back(s[i].y);
        }
        sort(X.begin(),X.end());//排序
        sort(Y.begin(),Y.end());
        X.erase(unique(X.begin(),X.end()),X.end());//去重加删除重复的
        Y.erase(unique(Y.begin(),Y.end()),Y.end());
        for(int i=1; i<=4; i++)
            Hash(s[i]);
        for(int i=1;i<=4;i++)//坐标乘2
        {
            s[i].x*=2;
            s[i].y*=2;
        }

        for(int i=s[1].x; i<=s[2].x; i++)//矩形边标记1
            vis[i][s[1].y]=vis[i][s[2].y]=1;
        for(int i=s[3].x; i<=s[4].x; i++)
            vis[i][s[3].y]=vis[i][s[4].y]=1;
        for(int i=s[1].y; i<=s[2].y; i++)
            vis[s[1].x][i]=vis[s[2].x][i]=1;
        for(int i=s[3].y; i<=s[4].y; i++)
            vis[s[3].x][i]=vis[s[4].x][i]=1;
        ll ans=0;
        for(int i=0; i<=10; i++)
            for(int j=0; j<=10; j++)
            {
                if(!vis[i][j])
                {
                    ans++;
                    bfs(i,j);
                }
            }
        printf("%lld\n",ans);
    }
    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值