其它
題目描述李教授於今天下午做一個非常重要的演講。不幸的是他不是一個非常愛整潔的人,他把自己做演講要用的幻燈片隨便堆放在一起。因此,演講之前他不得不去整理這些幻燈片。做為一個講求效率的學者,他希望盡可能簡單地完成它。情況是這樣,教授這次演講一共要用n張幻燈片(n<=26),這n張幻燈片按照演講要使用的順序已經用數字1,2,…,n在上面編上了號。因為幻燈片是透明的,所以我們不能一下子看清每一個數字所對應的幻燈片。
現在我們用大寫字母A,B,C,。。。再次把幻燈片依次編上號,如樣例所示,我們可以很快發現編號為A的幻燈片是第4張,把它抽出來後我們又可以確定編號為C的幻燈片是第2張,。。。
你的任務是編寫一個程序,把幻燈片的數字編號和字母編號對應起來,顯然這種對應應該是唯一的;若是出現多種對應的情況或是某些數字編號和字母對應不起來,我們就稱對應是無法實現的。
輸入格式第一行只有一個數n,表示有n張幻燈片,接下來的n行第行包括4個整數Xmin,Xmax,Ymin,Ymax(整數之間用空格分開),為幻燈片的坐標(該區域為幻燈片),這n張幻燈片按其在輸入文件中出現的順序從前到後依次編號為A,B,C,。。。再接下來的n行依次為n個數字編號的坐標X,Y,顯然在幻燈片之外是不會有數字的。
(其實是鍵盤輸入了啦)
輸出格式若是對應可以實現,你的輸出應該包括n行,每一行為一個字母和一個數字,中間以一個空格隔開,並且各行以字母的升序排列,注意輸出的字母要大寫並且頂格;反之,若是對應無法實現,在文件的第一行頂格輸出None即可。行首行末無多余空格。
(其實是屏幕輸出了啦。。。)
樣例輸入
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
輸出
A4
B1
C2
D3
暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡暴力出奇跡、】
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 struct node 6 { 7 int xmin; 8 int xmax; 9 int ymin; 10 int ymax; 11 int vis; 12 int bj; 13 }a[1001]; 14 struct zb 15 { 16 int x; 17 int y; 18 int vis; 19 int bj; 20 }b[1001]; 21 int n; 22 int flag=0; 23 char hh='A'; 24 int ans[1001]; 25 void dfs(int p) 26 { 27 if(p==n+1) 28 { 29 if(flag==0) 30 { 31 for(int i=1;i<=n;i++) 32 { 33 ans[i]=a[i].bj; 34 } 35 flag=1; 36 } 37 else 38 { 39 for(int i=1;i<=n;i++) 40 { 41 if(a[i].bj!=ans[i]) 42 { 43 printf("None"); 44 flag=2; 45 return; 46 } 47 } 48 } 49 50 /*for(int i=1;i<=n;i++) 51 printf("%c %d\n",hh,a[i].bj); 52 flag=1; 53 return;*/ 54 } 55 for(int j=1;j<=n;j++) 56 { 57 if(a[j].vis==0) 58 { 59 for(int k=1;k<=n;k++) 60 { 61 if(a[j].xmin<b[k].x&&a[j].xmax>b[k].x&&a[j].ymin<b[k].y&&a[j].ymax>b[k].y&&b[k].vis==0) 62 { 63 a[j].vis=1; 64 b[k].vis=1; 65 a[j].bj=k; 66 dfs(p+1); 67 if(flag==2)return; 68 b[k].vis=0; 69 a[j].vis=0; 70 } 71 } 72 73 } 74 75 } 76 } 77 int main() 78 { 79 80 scanf("%d",&n); 81 for(int i=1;i<=n;i++) 82 scanf("%d%d%d%d",&a[i].xmin,&a[i].xmax,&a[i].ymin,&a[i].ymax); 83 for(int i=1;i<=n;i++) 84 scanf("%d%d",&b[i].x,&b[i].y); 85 dfs(1); 86 if(flag==1) 87 for(int i=1;i<=n;i++) 88 { 89 printf("%c%d\n",hh++,ans[i]); 90 } 91 return 0; 92 93 }