标签:space height logs 问题 数字 min nbsp int 中间
slides.in
|
slides.out
|
4
6 22 10 20
4 18 6 16
8 20 2 18
10 24 4 8
9 15
19 17
11 7
21 11
|
A 4
B 1
C 2
D 3
|
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<algorithm> 6 using namespace std; 7 int n; 8 struct H{ 9 int x1,x2,y1,y2; 10 }card[30]; 11 struct K{ 12 int x,y; 13 }f[30]; 14 int tree[30][30],r[30],ans[30],tree2[30][30]; 15 bool p[30]; 16 int main() 17 { 18 scanf("%d",&n); 19 for(int i=1;i<=n;i++) 20 { 21 scanf("%d%d%d%d",&card[i].x1,&card[i].x2,&card[i].y1,&card[i].y2); 22 } 23 for(int i=1;i<=n;i++) 24 { 25 int a,b; 26 scanf("%d%d",&a,&b); 27 f[i].x=a,f[i].y=b; 28 for(int j=1;j<=n;j++) 29 { 30 if(a>=card[j].x1&&a<=card[j].x2&&b<=card[j].y2&&b>=card[j].y1) 31 { 32 tree[i][++tree[i][0]]=j; //点对应的范围 33 tree2[j][++tree2[j][0]]=i; 34 r[j]++;//范围的入度,内有几个点 35 } 36 } 37 } 38 int num=0; 39 while(num<n) 40 { 41 int t=0,i; 42 for(i=1;i<=n;i++) 43 { 44 if(r[i]==1)//如果范围对应的点只有一个 45 { 46 int x; 47 for(int k=1;k<=tree2[i][0];k++) 48 if(!p[tree2[i][k]]) 49 { 50 ans[i]=tree2[i][k],p[ans[i]]=true;break;//ans[ ] 内的数不是一个一个挨着放进去的 !而是按照扫到的范围的顺序放进去 51 } 52 t++;num++; 53 r[i]=0x7fffffff; 54 } 55 for(int j=1;j<=tree[ans[i]][0];j++) 56 r[tree[ans[i]][j]]--; 57 } 58 if(t==0) 59 { 60 printf("None"); 61 return 0; 62 } 63 } 64 for(int i=1;i<=n;i++) 65 { 66 char c; 67 c=i+‘A‘-1; 68 printf("%c %d\n",c,ans[i]); 69 } 70 return 0; 71 }
标签:space height logs 问题 数字 min nbsp int 中间
原文地址:http://www.cnblogs.com/yhyl/p/6718895.html