栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1752 Rectangular Rectitude

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1752 Rectangular Rectitude

#include<iostream>#include<stdio.h>using namespace std;typedef int int64;struct rectangle{    int64 x1,y1;    int64 x2,y2;    int c;}R[ 1000 ],T1[100000],T2[100000];int num1,num2;void Add( int64 x1,int64 y1,int64 x2,int64 y2 ,int c){    T2[num2].x1=x1;    T2[num2].y1=y1;    T2[num2].x2=x2;    T2[num2].y2=y2;    T2[num2].c = c;    num2++;}void deal(int pos){    int i;    int k1,k2;    for(i=0;i<num1;i++)    {       if( T1[i].x2 <= R[pos].x1 || T1[i].x1 >= R[pos].x2 )       {T2[num2++]=T1[i];continue;       }       if( T1[i].y2 <= R[pos].y1 || T1[i].y1 >= R[pos].y2 )       {T2[num2++]=T1[i];continue;       }       k1=max(T1[i].x1,R[pos].x1);       k2=min(T1[i].x2,R[pos].x2);       if( T1[i].x1 < k1 )Add(T1[i].x1,T1[i].y1,k1,T1[i].y2,T1[i].c);       if( k2 < T1[i].x2 )Add(k2,T1[i].y1,T1[i].x2,T1[i].y2,T1[i].c);       T1[i].x1=k1;       T1[i].x2=k2;       k1=max(T1[i].y1,R[pos].y1);       k2=min(T1[i].y2,R[pos].y2);       if( T1[i].y1 < k1 )Add(T1[i].x1,T1[i].y1,T1[i].x2,k1,T1[i].c);       if( k2 < T1[i].y2 )Add(T1[i].x1,k2,T1[i].x2,T1[i].y2,T1[i].c);    }    for(i=0;i<num2;i++)       T1[i]=T2[i];    T1[i]=R[pos];    num1=num2+1;    num2=0;}void Incise(int n,int a[]){    num1 = num2 = 0;    for(int i=0;i<n;i++)    {       deal(a[i]);    }}int main(){    int n,c;    int tp1,tp2;    int a[ 1000 ],cas=1;    int ans;    while( scanf("%d%d",&n,&c) && n )    {       for(int i=0;i<n;i++)       {scanf("%d%d%d%d%d",&R[i].c,&R[i].x1,&R[i].y1,&R[i].x2,&R[i].y2);tp1 = min(R[i].x1,R[i].x2);tp2 = max(R[i].x1,R[i].x2);R[i].x1 = tp1,R[i].x2 = tp2;tp1 = min(R[i].y1,R[i].y2);tp2 = max(R[i].y1,R[i].y2);R[i].y1 = tp1,R[i].y2 = tp2;a[i] = i;       }       Incise(n,a);       printf("The area of color %d in dataset %d is: ",c,cas++);       ans = 0;       for(int i=0;i<num1;i++)       {         if( T1[i].c == c )        {ans += (T1[i].x1 - T1[i].x2) * ( T1[i].y1 - T1[i].y2);        }       }       printf("%dn",ans);    }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号