zoukankan      html  css  js  c++  java
  • 【HDOJ6665】Calabash and Landlord(dfs)

    题意:二维平面上有两个框,问平面被分成了几个部分

    x,y<=1e9

    思路:分类讨论可以

    但数据范围实在太小了,离散化以后随便dfs一下

      1 #include<bits/stdc++.h>
      2 using namespace std;
      3 typedef long long ll;
      4 typedef unsigned int uint;
      5 typedef unsigned long long ull;
      6 typedef pair<int,int> PII;
      7 typedef pair<ll,ll> Pll;
      8 typedef vector<int> VI;
      9 typedef vector<PII> VII;
     10 #define N  110000
     11 #define M  4100000
     12 #define fi first
     13 #define se second
     14 #define MP make_pair
     15 #define pi acos(-1)
     16 #define mem(a,b) memset(a,b,sizeof(a))
     17 #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
     18 #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
     19 #define lowbit(x) x&(-x)
     20 #define Rand (rand()*(1<<16)+rand())
     21 #define id(x) ((x)<=B?(x):m-n/(x)+1)
     22 #define ls p<<1
     23 #define rs p<<1|1
     24 
     25 const ll MOD=1e9+7,inv2=(MOD+1)/2;
     26       double eps=1e-6;
     27       int INF=1e9;
     28       int dx[4]={-1,1,0,0};
     29       int dy[4]={0,0,-1,1};
     30 
     31 int read()
     32 {
     33    int v=0,f=1;
     34    char c=getchar();
     35    while(c<48||57<c) {if(c=='-') f=-1; c=getchar();}
     36    while(48<=c&&c<=57) v=(v<<3)+v+v+c-48,c=getchar();
     37    return v*f;
     38 }
     39 
     40 struct arr
     41 {
     42     int x,id;
     43 }x[10],y[10];
     44 int b[20][20],c[20],d[20];
     45 
     46 bool cmp(arr a,arr b)
     47 {
     48     return a.x<b.x;
     49 }
     50 
     51 void dfs(int x,int y)
     52 {
     53     //printf("x=%d y=%d
    ",x,y);
     54     b[x][y]=1;
     55     rep(i,0,3)
     56     {
     57         int ux=x+dx[i],uy=y+dy[i];
     58         if(ux>0&&ux<15&&uy>0&&uy<15&&b[ux][uy]==0) dfs(ux,uy);
     59     }
     60 }
     61 
     62 int main()
     63 {
     64     //freopen("1.in","r",stdin);
     65     int cas;
     66     scanf("%d",&cas);
     67     while(cas--)
     68     {
     69         x[1].x=read(),y[1].x=read(),x[2].x=read(),y[2].x=read();
     70         x[3].x=read(),y[3].x=read(),x[4].x=read(),y[4].x=read();
     71         rep(i,1,4)
     72         {
     73             x[i].id=y[i].id=i;
     74         }
     75         sort(x+1,x+4+1,cmp);
     76         sort(y+1,y+4+1,cmp);
     77         int m1=2,m2=2;
     78         c[x[1].id]=2;
     79         d[y[1].id]=2;
     80         rep(i,2,4)
     81         {
     82             if(x[i].x==x[i-1].x) c[x[i].id]=m1;
     83              else
     84              {
     85                  m1+=2;
     86                  c[x[i].id]=++m1;
     87              }
     88             if(y[i].x==y[i-1].x) d[y[i].id]=m2;
     89              else
     90              {
     91                  m2+=2;
     92                  d[y[i].id]=++m2;
     93              }
     94         }
     95         rep(i,1,15)
     96          rep(j,1,15) b[i][j]=0;
     97         rep(i,d[1],d[2]) b[c[1]][i]=b[c[2]][i]=1;
     98         rep(i,d[3],d[4]) b[c[3]][i]=b[c[4]][i]=1;
     99         rep(i,c[1],c[2]) b[i][d[2]]=b[i][d[1]]=1;
    100         rep(i,c[3],c[4]) b[i][d[4]]=b[i][d[3]]=1;
    101         int ans=0;
    102         rep(i,1,14)
    103          rep(j,1,14)
    104           if(b[i][j]==0)
    105           {
    106               ans++;
    107               dfs(i,j);
    108           }
    109 
    110         printf("%d
    ",ans);
    111 
    112 
    113     }
    114 
    115     return 0;
    116 }
  • 相关阅读:
    网络爬虫(抓取)正则表达式 (多线程协作)
    Asp.net 主题
    Asp.net 菜单控件
    CSS 布局Float 【4】
    CSS 布局Float 【3】
    CSS 布局Float 【2】
    CSS 布局Float 【1】
    CSS 布局Float 【0】
    Asp.Net 母版页
    Sql Server 远程过程调用失败
  • 原文地址:https://www.cnblogs.com/myx12345/p/11654921.html
Copyright © 2011-2022 走看看